|
|
@@ -2,13 +2,16 @@
|
|
|
using System.Collections.Generic;
|
|
|
using System.Drawing;
|
|
|
using System.Drawing.Drawing2D;
|
|
|
+using System.Net;
|
|
|
+using System.Numerics;
|
|
|
using System.Windows.Forms;
|
|
|
+using unvell.D2DLib;
|
|
|
|
|
|
namespace OTSMeasureApp
|
|
|
{
|
|
|
|
|
|
|
|
|
- public class CDisplayGDIObject /*: CRectangleGDIObject */// 同样的方式可以从ADraggableGDIObject生成其它图形的继承角类,比如矩形,三形等等。。
|
|
|
+ public class CDisplayGDIObject
|
|
|
{
|
|
|
public CDisplayGDIObject()
|
|
|
{
|
|
|
@@ -46,8 +49,7 @@ namespace OTSMeasureApp
|
|
|
SetInitRegionF(m_OrigineRegionF);
|
|
|
CreateType = cType;
|
|
|
ID = System.Guid.NewGuid().ToString();
|
|
|
- //startPoint = new PointF(rect.Left, rect.Top);
|
|
|
- //EndPoint = new PointF(rect.Right, rect.Bottom);
|
|
|
+
|
|
|
OTSX = -1;
|
|
|
OTSY = -1;
|
|
|
}
|
|
|
@@ -230,27 +232,32 @@ namespace OTSMeasureApp
|
|
|
else if (createType == CreateRectangleType.Text)
|
|
|
{
|
|
|
//设置文字对齐方式
|
|
|
- StringFormat sf = new StringFormat();
|
|
|
- sf.Alignment = StringAlignment.Center;
|
|
|
- sf.LineAlignment = StringAlignment.Center;
|
|
|
- //文字颜色
|
|
|
- Color myColor = OTSSamplespaceGraphicsPanelFun.GetColorValue(ColorType.FontColor);
|
|
|
+ //if (m_RegionF.Height > 150)//won't display when it's too small
|
|
|
+ //{
|
|
|
+ StringFormat sf = new StringFormat();
|
|
|
+ sf.Alignment = StringAlignment.Center;
|
|
|
+ sf.LineAlignment = StringAlignment.Center;
|
|
|
+ //文字颜色
|
|
|
+ Color myColor = OTSSamplespaceGraphicsPanelFun.GetColorValue(ColorType.FontColor);
|
|
|
+
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+ SolidBrush solidBrush = new SolidBrush(Color.FromArgb(50, Color.Black));
|
|
|
+ //字体大小 根据样品孔Rectangle大小
|
|
|
+ float fontSize = m_RegionF.Width / 2;
|
|
|
+ Font font = new Font("宋体", fontSize, FontStyle.Regular);
|
|
|
+ if (fontSize == 0)
|
|
|
+ {
|
|
|
+ font = new Font("宋体", 5, FontStyle.Regular);
|
|
|
+ }
|
|
|
+ //消除锯齿
|
|
|
+ e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
+ e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
+ e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
+
|
|
|
+ e.Graphics.DrawString(strContent, font, sampleBrush, m_RegionF, sf);
|
|
|
+
|
|
|
+ //}
|
|
|
|
|
|
- System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
- SolidBrush solidBrush = new SolidBrush(Color.FromArgb(50, Color.Black));
|
|
|
- //字体大小 根据样品孔Rectangle大小
|
|
|
- float fontSize = m_RegionF.Width / 2;
|
|
|
- Font font = new Font("宋体", fontSize, FontStyle.Regular);
|
|
|
- if (fontSize == 0)
|
|
|
- {
|
|
|
- font = new Font("宋体", 5, FontStyle.Regular);
|
|
|
- }
|
|
|
- //消除锯齿
|
|
|
- e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
- e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
- e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
-
|
|
|
- e.Graphics.DrawString(strContent, font, sampleBrush, m_RegionF, sf);
|
|
|
}
|
|
|
//矩形
|
|
|
else if (createType == CreateRectangleType.Rectangle)
|
|
|
@@ -274,9 +281,7 @@ namespace OTSMeasureApp
|
|
|
Color myColor = selColor;
|
|
|
|
|
|
System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
- //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
- //e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
- //e.Graphics.CompositingQuality = CompositingQuality.AssumeLinear;//再加一点
|
|
|
+
|
|
|
if (Shape == 0)
|
|
|
{
|
|
|
|
|
|
@@ -378,23 +383,25 @@ namespace OTSMeasureApp
|
|
|
//设置直线位置与尺寸
|
|
|
PointF startPointF = new PointF(m_RegionF.Left, m_RegionF.Top);
|
|
|
PointF endPointF = new PointF(m_RegionF.Right, m_RegionF.Bottom);
|
|
|
-
|
|
|
- float fontSize = m_RegionF.Width / 4;
|
|
|
- Font font;
|
|
|
- if (fontSize == 0)
|
|
|
+ if (m_RegionF.Height > 20)//won't display when it's too small,to speed up
|
|
|
{
|
|
|
- font = new Font("宋体", 5, FontStyle.Regular);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- font = new Font("宋体", fontSize, FontStyle.Regular);
|
|
|
- }
|
|
|
+ float fontSize = m_RegionF.Width / 4;
|
|
|
+ Font font;
|
|
|
+ if (fontSize == 0)
|
|
|
+ {
|
|
|
+ font = new Font("宋体", 5, FontStyle.Regular);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ font = new Font("宋体", fontSize, FontStyle.Regular);
|
|
|
+ }
|
|
|
|
|
|
- StringFormat sf = new StringFormat();
|
|
|
- sf.Alignment = StringAlignment.Center;
|
|
|
- sf.LineAlignment = StringAlignment.Center;
|
|
|
- e.Graphics.DrawString(m_sequenceNum.ToString(), font, sampleBrush, m_RegionF, sf);
|
|
|
-
|
|
|
+ StringFormat sf = new StringFormat();
|
|
|
+ sf.Alignment = StringAlignment.Center;
|
|
|
+ sf.LineAlignment = StringAlignment.Center;
|
|
|
+
|
|
|
+ e.Graphics.DrawString(m_sequenceNum.ToString(), font, sampleBrush, m_RegionF, sf);
|
|
|
+ }
|
|
|
|
|
|
//绘制帧图
|
|
|
e.Graphics.DrawRectangle(pen, startPointF.X, startPointF.Y, endPointF.X - startPointF.X, endPointF.Y - startPointF.Y);
|
|
|
@@ -417,9 +424,7 @@ namespace OTSMeasureApp
|
|
|
{
|
|
|
Color myColor = System.Drawing.Color.White;
|
|
|
System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
- //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
- //e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
- //e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
+
|
|
|
var m_Region = new Rectangle();
|
|
|
m_Region.X = (int)m_RegionF.X;
|
|
|
m_Region.Y = (int)m_RegionF.Y;
|
|
|
@@ -430,19 +435,16 @@ namespace OTSMeasureApp
|
|
|
//绘制样品孔BSE图像
|
|
|
else if (createType == CreateRectangleType.DrawFrameOfHoleBSEImage)
|
|
|
{
|
|
|
- //Color myColor = System.Drawing.Color.White;
|
|
|
- //System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
- //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
- //e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
- //e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
+
|
|
|
|
|
|
- //设置直线位置与尺寸
|
|
|
+
|
|
|
PointF startPointF = new PointF(m_RegionF.Left, m_RegionF.Top);
|
|
|
PointF endPointF = new PointF(m_RegionF.Right + 2, m_RegionF.Bottom + 2);
|
|
|
//绘制样品孔中图像信息
|
|
|
if (BSEImage != null)
|
|
|
{
|
|
|
- e.Graphics.DrawImage(BSEImage, startPointF.X, startPointF.Y, endPointF.X - startPointF.X, endPointF.Y - startPointF.Y);
|
|
|
+ Image thumbnail = BSEImage.GetThumbnailImage((int)m_RegionF.Width + 2,(int)m_RegionF.Height + 2, null, IntPtr.Zero);
|
|
|
+ e.Graphics.DrawImage(thumbnail, startPointF);/*, startPointF.X, startPointF.Y, endPointF.X - startPointF.X, endPointF.Y - startPointF.Y*/
|
|
|
|
|
|
}
|
|
|
}
|
|
|
@@ -450,9 +452,7 @@ namespace OTSMeasureApp
|
|
|
{
|
|
|
Color myColor = System.Drawing.Color.Red;
|
|
|
System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
- //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
- //e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
- //e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
+
|
|
|
//X轴线
|
|
|
PointF startPointX = semCenterPoint;
|
|
|
startPointX.X = startPointX.X - 3;
|
|
|
@@ -472,9 +472,7 @@ namespace OTSMeasureApp
|
|
|
else if (createType == CreateRectangleType.DrawBSEElementSignPoint)
|
|
|
{
|
|
|
System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Green);
|
|
|
- //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
- //e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
- //e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
+
|
|
|
Pen pen = new Pen(sampleBrush, 2f);
|
|
|
int X = (int)m_OrigineRegionF.X;
|
|
|
int Y = (int)m_OrigineRegionF.Y;
|
|
|
@@ -484,9 +482,7 @@ namespace OTSMeasureApp
|
|
|
//绘制多边形测量区域
|
|
|
else if (createType == CreateRectangleType.Polygon)
|
|
|
{
|
|
|
- //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
- //e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
- //e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
+
|
|
|
Color myColor = selColor;
|
|
|
//System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
Pen pen = new Pen(myColor, 1);
|
|
|
@@ -510,10 +506,7 @@ namespace OTSMeasureApp
|
|
|
else if (createType == CreateRectangleType.DrawPolygonFinish)
|
|
|
{
|
|
|
Color myColor = selColor;
|
|
|
- //System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
- //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
- //e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
- //e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
+
|
|
|
Pen pen = new Pen(myColor, 1);
|
|
|
var m_Region = new Rectangle();
|
|
|
m_Region.X = (int)m_RegionF.X;
|
|
|
@@ -526,19 +519,467 @@ namespace OTSMeasureApp
|
|
|
else if (createType == CreateRectangleType.CircleByThreePoints)
|
|
|
{
|
|
|
Color myColor = selColor;
|
|
|
- //System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+
|
|
|
Pen p = new Pen(myColor, 1);
|
|
|
+
|
|
|
+
|
|
|
+ var m_Region = new Rectangle();
|
|
|
+ m_Region.X = (int)m_RegionF.X;
|
|
|
+ m_Region.Y = (int)m_RegionF.Y;
|
|
|
+ m_Region.Width = (int)m_RegionF.Width;
|
|
|
+ m_Region.Height = (int)m_RegionF.Height;
|
|
|
+ e.Graphics.DrawEllipse(p, m_Region);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public virtual void OnRender(D2DGraphics g)
|
|
|
+ {
|
|
|
+ if (createType == CreateRectangleType.SampleBackGround_Rectangle)
|
|
|
+ {
|
|
|
+ //获取颜色
|
|
|
+ Color myColor = OTSSamplespaceGraphicsPanelFun.GetColorValue(ColorType.RoundRectangleColor);
|
|
|
+
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+ GraphicsPath grPath = CreateRoundedRectanglePath(m_RegionF, 20);
|
|
|
+ //e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
|
|
|
+
|
|
|
+ //g.FillPath(sampleBrush, grPath);
|
|
|
+ //e.Graphics.DrawPath(Pens.Black, grPath);
|
|
|
+ var device=g.Device;
|
|
|
+ var brush = device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ //D2DBrush brush=new D2DBrush(sampleBrush);
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ var pen = device.CreatePen(D2DColor.FromGDIColor(myColor));
|
|
|
+ g.DrawFillRectangle(ref rect, brush, pen, 1);
|
|
|
+ }
|
|
|
+ //样品台-圆形
|
|
|
+ else if (createType == CreateRectangleType.SampleBackGround_Circle)
|
|
|
+ {
|
|
|
+ //获取颜色
|
|
|
+ Color myColor = OTSSamplespaceGraphicsPanelFun.GetColorValue(ColorType.SampleBackGroundColor);
|
|
|
+
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
//e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
//e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
//e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
+ //e.Graphics.FillEllipse(sampleBrush, m_RegionF);
|
|
|
+ //e.Graphics.DrawEllipse(Pens.Black, m_RegionF);
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var pen = g.Device.CreatePen(D2DColor.FromGDIColor(myColor));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ D2DEllipse ell = new D2DEllipse(rect);
|
|
|
+ g.FillEllipse(ell, brush);
|
|
|
+ g.DrawEllipse(ell, D2DColor.FromGDIColor(myColor));
|
|
|
+ }
|
|
|
+ //圆形
|
|
|
+ else if (createType == CreateRectangleType.Circle)
|
|
|
+ {
|
|
|
+ //System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(System.Drawing.Color.White);
|
|
|
+ //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
+ //e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
+ //e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
+ //e.Graphics.FillEllipse(sampleBrush, m_RegionF);
|
|
|
+ //e.Graphics.DrawEllipse(Pens.Black, m_RegionF);
|
|
|
+
|
|
|
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var pen = g.Device.CreatePen(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ D2DEllipse ell = new D2DEllipse(rect);
|
|
|
+ g.FillEllipse(ell, brush);
|
|
|
+ g.DrawEllipse(ell, D2DColor.FromGDIColor(Color.White));
|
|
|
+ }
|
|
|
+ //文字
|
|
|
+ else if (createType == CreateRectangleType.Text)
|
|
|
+ {
|
|
|
+ //设置文字对齐方式
|
|
|
+
|
|
|
+ StringFormat sf = new StringFormat();
|
|
|
+ sf.Alignment = StringAlignment.Center;
|
|
|
+ sf.LineAlignment = StringAlignment.Center;
|
|
|
+ //文字颜色
|
|
|
+ Color myColor = OTSSamplespaceGraphicsPanelFun.GetColorValue(ColorType.FontColor);
|
|
|
+
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+ SolidBrush solidBrush = new SolidBrush(Color.FromArgb(50, Color.Black));
|
|
|
+ //字体大小 根据样品孔Rectangle大小
|
|
|
+ float fontSize = m_RegionF.Width / 2;
|
|
|
+ Font font = new Font("宋体", fontSize, FontStyle.Regular);
|
|
|
+ if (fontSize == 0)
|
|
|
+ {
|
|
|
+ font = new Font("宋体", 5, FontStyle.Regular);
|
|
|
+ }
|
|
|
+ //消除锯齿
|
|
|
+ //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
+ //e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
+ //e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
+
|
|
|
+ //e.Graphics.DrawString(strContent, font, sampleBrush, m_RegionF, sf);
|
|
|
+ D2DTextFormat tf = g.Device.CreateTextFormat("宋体", fontSize);
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var pen = g.Device.CreatePen(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ g.DrawText(strContent, brush, tf,rect);
|
|
|
+ //}
|
|
|
+
|
|
|
+ }
|
|
|
+ //矩形
|
|
|
+ else if (createType == CreateRectangleType.Rectangle)
|
|
|
+ {
|
|
|
+ Color myColor = System.Drawing.Color.White;
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+ //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
+ //e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
+ //e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
+ //e.Graphics.FillRectangle(sampleBrush, m_RegionF);
|
|
|
var m_Region = new Rectangle();
|
|
|
m_Region.X = (int)m_RegionF.X;
|
|
|
m_Region.Y = (int)m_RegionF.Y;
|
|
|
m_Region.Width = (int)m_RegionF.Width;
|
|
|
m_Region.Height = (int)m_RegionF.Height;
|
|
|
- e.Graphics.DrawEllipse(p, m_Region);
|
|
|
+ //e.Graphics.DrawRectangle(Pens.Black, m_Region);
|
|
|
+
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var pen = g.Device.CreatePen(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ g.DrawRectangle(rect, pen);
|
|
|
+ }
|
|
|
+ //选择样品台
|
|
|
+ else if (createType == CreateRectangleType.SelectSample)
|
|
|
+ {
|
|
|
+ Color myColor = selColor;
|
|
|
+
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+
|
|
|
+ if (Shape == 0)
|
|
|
+ {
|
|
|
+
|
|
|
+ //e.Graphics.FillEllipse(sampleBrush, m_RegionF);
|
|
|
+ //e.Graphics.DrawEllipse(Pens.Black, m_RegionF);
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var pen = g.Device.CreatePen(D2DColor.FromGDIColor(myColor));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ D2DEllipse ell = new D2DEllipse(rect);
|
|
|
+ g.FillEllipse(ell, brush);
|
|
|
+ g.DrawEllipse(ell, D2DColor.FromGDIColor(myColor));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //e.Graphics.FillRectangle(sampleBrush, m_RegionF);
|
|
|
+ var m_Region = new Rectangle();
|
|
|
+ m_Region.X = (int)m_RegionF.X;
|
|
|
+ m_Region.Y = (int)m_RegionF.Y;
|
|
|
+ m_Region.Width = (int)m_RegionF.Width;
|
|
|
+ m_Region.Height = (int)m_RegionF.Height;
|
|
|
+ //e.Graphics.DrawRectangle(Pens.Black, m_Region);
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var pen = g.Device.CreatePen(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ g.FillRectangle(rect,brush);
|
|
|
+ g.DrawRectangle(rect, pen);
|
|
|
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //测试区域
|
|
|
+ else if (createType == CreateRectangleType.MeasureArea)
|
|
|
+ {
|
|
|
+ Color myColor = selColor;
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+ Pen p = new Pen(myColor, 1);
|
|
|
+ //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
|
|
|
+ //e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
|
|
|
+ //e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
|
|
|
+
|
|
|
+
|
|
|
+ if (Shape == 0)
|
|
|
+ {
|
|
|
+
|
|
|
+ //e.Graphics.DrawEllipse(p, m_RegionF);
|
|
|
+
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var pen = g.Device.CreatePen(D2DColor.FromGDIColor(myColor));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ D2DEllipse ell = new D2DEllipse(rect);
|
|
|
+ //g.FillEllipse(ell, brush);
|
|
|
+ g.DrawEllipse(ell, D2DColor.FromGDIColor(myColor));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var m_Region = new Rectangle();
|
|
|
+ m_Region.X = (int)m_RegionF.X;
|
|
|
+ m_Region.Y = (int)m_RegionF.Y;
|
|
|
+ m_Region.Width = (int)m_RegionF.Width;
|
|
|
+ m_Region.Height = (int)m_RegionF.Height;
|
|
|
+
|
|
|
+ //e.Graphics.DrawRectangle(p, m_Region);
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var pen = g.Device.CreatePen(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ //g.FillRectangle(rect, brush);
|
|
|
+ g.DrawRectangle(rect, pen);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //绘制帧图 直线
|
|
|
+ else if (createType == CreateRectangleType.SingleLine)
|
|
|
+ {
|
|
|
+ //设置颜色
|
|
|
+ Color myColor = OTSSamplespaceGraphicsPanelFun.GetColorValue(ColorType.FieldColor);
|
|
|
+
|
|
|
+ //设置画笔
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+ Pen pen = new Pen(sampleBrush, 0.0001f);
|
|
|
+ //未抗锯齿
|
|
|
+ //e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default;
|
|
|
+ //e.Graphics.InterpolationMode = InterpolationMode.Default;
|
|
|
+ //e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
|
|
|
+ //设置直线位置与尺寸
|
|
|
+ PointF startPointF = new PointF(startPoint.X, startPoint.Y);
|
|
|
+ PointF endPointF = new PointF(endPoint.X, endPoint.Y);
|
|
|
+ //度量单位
|
|
|
+ //e.Graphics.PageUnit = GraphicsUnit.Display;
|
|
|
+ //e.Graphics.DrawLine(pen, startPointF, endPointF);
|
|
|
+ var dcolor = D2DColor.FromGDIColor(myColor);
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var dpen = g.Device.CreatePen(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ g.DrawLine(startPoint.X, startPoint.Y, endPoint.X, endPoint.Y, dcolor);
|
|
|
+
|
|
|
+ }
|
|
|
+ //绘制标样
|
|
|
+ else if (createType == CreateRectangleType.SpecimenRectangle)
|
|
|
+ {
|
|
|
+ Color myColor = System.Drawing.Color.Black;
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+ Pen pen = new Pen(sampleBrush, 0.0001f);
|
|
|
+ //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
|
|
|
+ var m_Region = new Rectangle();
|
|
|
+ m_Region.X = (int)m_RegionF.X;
|
|
|
+ m_Region.Y = (int)m_RegionF.Y;
|
|
|
+ m_Region.Width = (int)m_RegionF.Width;
|
|
|
+ m_Region.Height = (int)m_RegionF.Height;
|
|
|
+ //e.Graphics.DrawRectangle(pen, m_Region);
|
|
|
+ //e.Graphics.FillRectangle(sampleBrush, m_Region);
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var dpen = g.Device.CreatePen(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ g.FillRectangle(rect, brush);
|
|
|
+ g.DrawRectangle(rect, dpen);
|
|
|
+ }
|
|
|
+ //绘制标样
|
|
|
+ else if (createType == CreateRectangleType.SpecimenCircle)
|
|
|
+ {
|
|
|
+ Color myColor = System.Drawing.Color.Black;
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+ Pen pen = new Pen(sampleBrush, 0.0001f);
|
|
|
+ //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
|
|
|
+ //e.Graphics.DrawEllipse(pen, m_RegionF);
|
|
|
+ //e.Graphics.FillEllipse(sampleBrush, m_RegionF);
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var dpen = g.Device.CreatePen(D2DColor.FromGDIColor(myColor));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ D2DEllipse ell = new D2DEllipse(rect);
|
|
|
+ g.FillEllipse(ell, brush);
|
|
|
+ g.DrawEllipse(ell, D2DColor.FromGDIColor(myColor));
|
|
|
+ }
|
|
|
+ //绘制帧图
|
|
|
+ else if (createType == CreateRectangleType.FieldRectangle)
|
|
|
+ {
|
|
|
+ Color myColor = SelColor;
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+ Pen pen = new Pen(sampleBrush, 0.01f);
|
|
|
+ //e.Graphics.SmoothingMode = SmoothingMode.Default;
|
|
|
+ //设置直线位置与尺寸
|
|
|
+ PointF startPointF = new PointF(m_RegionF.Left, m_RegionF.Top);
|
|
|
+ PointF endPointF = new PointF(m_RegionF.Right, m_RegionF.Bottom);
|
|
|
+ if (m_RegionF.Height > 20)//won't display when it's too small,to speed up
|
|
|
+ {
|
|
|
+ float fontSize = m_RegionF.Width / 4;
|
|
|
+ Font font;
|
|
|
+ if (fontSize == 0)
|
|
|
+ {
|
|
|
+ font = new Font("宋体", 5, FontStyle.Regular);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ font = new Font("宋体", fontSize, FontStyle.Regular);
|
|
|
+ }
|
|
|
+
|
|
|
+ //StringFormat sf = new StringFormat();
|
|
|
+ //sf.Alignment = StringAlignment.Center;
|
|
|
+ //sf.LineAlignment = StringAlignment.Center;
|
|
|
+ D2DTextFormat tf = g.Device.CreateTextFormat("宋体", fontSize);
|
|
|
+ var txtbrush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var txtpen = g.Device.CreatePen(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var txtrect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ g.DrawText(strContent, txtbrush, tf, txtrect);
|
|
|
+ //e.Graphics.DrawString(m_sequenceNum.ToString(), font, sampleBrush, m_RegionF, sf);
|
|
|
+ }
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var dpen = g.Device.CreatePen(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ //绘制帧图
|
|
|
+ g.DrawRectangle( startPointF.X, startPointF.Y, endPointF.X ,endPointF.Y, D2DColor.FromGDIColor(myColor));
|
|
|
+ }
|
|
|
+ //绘制颗粒
|
|
|
+ else if (createType == CreateRectangleType.ParticleLine)
|
|
|
+ {
|
|
|
+ //Color myColor = LineColor;
|
|
|
+ //System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+ //Pen pen = new Pen(sampleBrush, 0.01f);
|
|
|
+ //e.Graphics.SmoothingMode = SmoothingMode.Default;
|
|
|
+ ////设置直线位置与长度
|
|
|
+ //PointF startPointF = LineStartPoint;
|
|
|
+ //float length = LineLength;
|
|
|
+ //PointF endPointF = new PointF(startPointF.X + length, startPointF.Y);
|
|
|
+ //e.Graphics.DrawLine(pen, startPointF, endPointF);
|
|
|
+ }
|
|
|
+ //矩形
|
|
|
+ else if (createType == CreateRectangleType.ParticleAreaRectangle)
|
|
|
+ {
|
|
|
+ //Color myColor = System.Drawing.Color.White;
|
|
|
+ //System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+
|
|
|
+ //var m_Region = new Rectangle();
|
|
|
+ //m_Region.X = (int)m_RegionF.X;
|
|
|
+ //m_Region.Y = (int)m_RegionF.Y;
|
|
|
+ //m_Region.Width = (int)m_RegionF.Width;
|
|
|
+ //m_Region.Height = (int)m_RegionF.Height;
|
|
|
+ //e.Graphics.DrawRectangle(Pens.Black, m_Region);
|
|
|
+ }
|
|
|
+ //绘制样品孔BSE图像
|
|
|
+ else if (createType == CreateRectangleType.DrawFrameOfHoleBSEImage)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ PointF startPointF = new PointF(m_RegionF.Left, m_RegionF.Top);
|
|
|
+ PointF endPointF = new PointF(m_RegionF.Right + 2, m_RegionF.Bottom + 2);
|
|
|
+ //绘制样品孔中图像信息
|
|
|
+ //if (BSEImage != null)
|
|
|
+ //{
|
|
|
+ // Image thumbnail = BSEImage.GetThumbnailImage((int)m_RegionF.Width + 2, (int)m_RegionF.Height + 2, null, IntPtr.Zero);
|
|
|
+ // e.Graphics.DrawImage(thumbnail, startPointF);/*, startPointF.X, startPointF.Y, endPointF.X - startPointF.X, endPointF.Y - startPointF.Y*/
|
|
|
+
|
|
|
+ //}
|
|
|
+ if (BSEImage != null)
|
|
|
+ {
|
|
|
+ var d2dimg = g.Device.CreateBitmapFromGDIBitmap((Bitmap)bseImage);
|
|
|
+ //Image thumbnail = BSEImage.GetThumbnailImage((int)m_RegionF.Width + 2, (int)m_RegionF.Height + 2, null, IntPtr.Zero);
|
|
|
+ //e.Graphics.DrawImage(thumbnail, startPointF);/*, startPointF.X, startPointF.Y, endPointF.X - startPointF.X, endPointF.Y - startPointF.Y*/
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ g.DrawBitmap(d2dimg, rect);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (createType == CreateRectangleType.DrawSEMCenterPoint)
|
|
|
+ {
|
|
|
+ Color myColor = System.Drawing.Color.Red;
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+
|
|
|
+ //X轴线
|
|
|
+ PointF startPointX = semCenterPoint;
|
|
|
+ startPointX.X = startPointX.X - 3;
|
|
|
+ PointF endPointX = semCenterPoint;
|
|
|
+ endPointX.X = endPointX.X + 3;
|
|
|
+ //Y轴线
|
|
|
+ PointF startPointY = semCenterPoint;
|
|
|
+ startPointY.Y = startPointY.Y - 3;
|
|
|
+ PointF endPointY = semCenterPoint;
|
|
|
+ endPointY.Y = endPointY.Y + 3;
|
|
|
+ //绘制XY轴交叉线+
|
|
|
+ Pen pen = new Pen(sampleBrush, 0.0001f);
|
|
|
+ //e.Graphics.DrawLine(pen, startPointX, endPointX);
|
|
|
+ //e.Graphics.DrawLine(pen, startPointY, endPointY);
|
|
|
+
|
|
|
+ var dcolor = D2DColor.FromGDIColor(myColor);
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var dpen = g.Device.CreatePen(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ g.DrawLine(startPointX.X, startPointX.Y, endPointX.X, endPointX.Y, dcolor);
|
|
|
+ g.DrawLine(startPointY.X, startPointY.Y, endPointY.X, endPointY.Y, dcolor);
|
|
|
+
|
|
|
+ }
|
|
|
+ //绘制BSE标记
|
|
|
+ else if (createType == CreateRectangleType.DrawBSEElementSignPoint)
|
|
|
+ {
|
|
|
+ System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Green);
|
|
|
+
|
|
|
+ Pen pen = new Pen(sampleBrush, 2f);
|
|
|
+ int X = (int)m_OrigineRegionF.X;
|
|
|
+ int Y = (int)m_OrigineRegionF.Y;
|
|
|
+ //e.Graphics.DrawLine(pen, new Point(X - 8, Y), new Point(X + 8, Y));
|
|
|
+ //e.Graphics.DrawLine(pen, new Point(X, Y - 8), new Point(X, Y + 8));
|
|
|
+
|
|
|
+
|
|
|
+ var dcolor = D2DColor.FromGDIColor(Color.Green);
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(Color.Green));
|
|
|
+ var dpen = g.Device.CreatePen(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ g.DrawLine(X-8,Y, X+8, Y, dcolor);
|
|
|
+ g.DrawLine(X, Y-8, X, Y+8, dcolor);
|
|
|
+ }
|
|
|
+ //绘制多边形测量区域
|
|
|
+ else if (createType == CreateRectangleType.Polygon)
|
|
|
+ {
|
|
|
+
|
|
|
+ Color myColor = selColor;
|
|
|
+ //System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
|
|
|
+ Pen pen = new Pen(myColor, 1);
|
|
|
+ if (GetPolygonPointFList().Count > 0)
|
|
|
+ {
|
|
|
+ List<PointF> PolygonPointF = new List<PointF>();
|
|
|
+ Vector2[] vec=new Vector2[GetPolygonPointFList().Count+1];
|
|
|
+ for (int i= 0;i < vec.Length;i++)
|
|
|
+ {
|
|
|
+ vec[i]=new Vector2( m_PolygonPoints[i].X, m_PolygonPoints[i].Y);
|
|
|
+ }
|
|
|
+ if (PolygonDrawingEndPoint.X != 0 && PolygonDrawingEndPoint.Y != 0)
|
|
|
+ {
|
|
|
+ vec[m_PolygonPoints.Count] = new Vector2(PolygonDrawingEndPoint.X, PolygonDrawingEndPoint.Y);
|
|
|
+ }
|
|
|
+
|
|
|
+ g.DrawLines(vec,D2DColor.FromGDIColor(selColor));
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }//多边形测量区域完成标识
|
|
|
+ else if (createType == CreateRectangleType.DrawPolygonFinish)
|
|
|
+ {
|
|
|
+ Color myColor = selColor;
|
|
|
+
|
|
|
+ Pen pen = new Pen(myColor, 1);
|
|
|
+ var m_Region = new Rectangle();
|
|
|
+ m_Region.X = (int)m_RegionF.X;
|
|
|
+ m_Region.Y = (int)m_RegionF.Y;
|
|
|
+ m_Region.Width = (int)m_RegionF.Width;
|
|
|
+ m_Region.Height = (int)m_RegionF.Height;
|
|
|
+ //e.Graphics.DrawRectangle(pen, m_Region);
|
|
|
+
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var dpen = g.Device.CreatePen(D2DColor.FromGDIColor(Color.White));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ //绘制帧图
|
|
|
+ g.DrawRectangle(rect,D2DColor.FromGDIColor(myColor));
|
|
|
+ }
|
|
|
+ //绘制多边形测量区域
|
|
|
+ else if (createType == CreateRectangleType.CircleByThreePoints)
|
|
|
+ {
|
|
|
+ Color myColor = selColor;
|
|
|
+
|
|
|
+ Pen p = new Pen(myColor, 1);
|
|
|
+
|
|
|
+
|
|
|
+ var m_Region = new Rectangle();
|
|
|
+ m_Region.X = (int)m_RegionF.X;
|
|
|
+ m_Region.Y = (int)m_RegionF.Y;
|
|
|
+ m_Region.Width = (int)m_RegionF.Width;
|
|
|
+ m_Region.Height = (int)m_RegionF.Height;
|
|
|
+ //e.Graphics.DrawEllipse(p, m_Region);
|
|
|
+ var brush = g.Device.CreateSolidColorBrush(D2DColor.FromGDIColor(myColor));
|
|
|
+ var dpen = g.Device.CreatePen(D2DColor.FromGDIColor(myColor));
|
|
|
+ var rect = new D2DRect(m_RegionF.Left, m_RegionF.Top, m_RegionF.Width, m_RegionF.Height);
|
|
|
+ D2DEllipse ell = new D2DEllipse(rect);
|
|
|
+ //g.FillEllipse(ell, brush);
|
|
|
+ g.DrawEllipse(ell, D2DColor.FromGDIColor(myColor));
|
|
|
}
|
|
|
}
|
|
|
public Image BSEImage
|
|
|
@@ -1208,7 +1649,7 @@ namespace OTSMeasureApp
|
|
|
protected RectangleF m_RegionF;
|
|
|
//绘制时与移动缩放时记录的位置与尺寸
|
|
|
protected RectangleF m_OrigineRegionF;
|
|
|
- //private GraphicsPath g_Path=new GraphicsPath();
|
|
|
+
|
|
|
private PointF startPoint;
|
|
|
private PointF endPoint;
|
|
|
|
|
|
@@ -1292,7 +1733,9 @@ namespace OTSMeasureApp
|
|
|
//圆形三点法
|
|
|
CircleByThreePoints=17,
|
|
|
|
|
|
- RingShape=18
|
|
|
+ RingShape=18,
|
|
|
+
|
|
|
+ SampleHoleImageBuffer=19
|
|
|
}
|
|
|
|
|
|
|