示例#1
0
        /// <summary>
        /// 绘制文字
        /// </summary>
        /// <param name="text">文字</param>
        /// <param name="font">字体</param>
        /// <param name="color">颜色</param>
        /// <param name="rect">矩形区域</param>
        public void DrawText(string text, FONT font, double dwPenColor, RECT rect)
        {
            if (dwPenColor == COLOR.Empty())
            {
                return;
            }
            if (dwPenColor < 0)
            {
                dwPenColor = Math.Abs(dwPenColor);
            }
            IntPtr hFont = CreateFont
                           (
                font.FontSize, 0,
                0, 0,
                font.Bold ? FW_BOLD : FW_REGULAR,
                font.Italic ? 1 : 0,
                font.Underline ? 1 : 0,
                0,
                GB2312_CHARSET,
                OUT_DEFAULT_PRECIS,
                CLIP_DEFAULT_PRECIS,
                DEFAULT_QUALITY,
                DEFAULT_PITCH | FF_SWISS,
                font.FontFamily
                           );
            RECT newRect = new RECT(rect.left + m_offsetX, rect.top + m_offsetY, rect.right + m_offsetX, rect.bottom + m_offsetY);

            SetBkMode(m_hDC, TRANSPARENT);
            SetTextColor(m_hDC, (int)dwPenColor);
            IntPtr hOldFont = SelectObject(m_hDC, hFont);

            DrawText(m_hDC, text, -1, ref newRect, 0 | DT_NOPREFIX);
            SelectObject(m_hDC, hOldFont);
            DeleteObject(hFont);
        }
示例#2
0
        /// <summary>
        /// 绘制文字
        /// </summary>
        /// <param name="text">文字</param>
        /// <param name="font">字体</param>
        /// <param name="color">颜色</param>
        /// <param name="mp">坐标</param>
        public void DrawText(string text, FONT font, double dwPenColor, POINT mp)
        {
            if (dwPenColor == COLOR.Empty())
            {
                return;
            }
            if (dwPenColor < 0)
            {
                dwPenColor = Math.Abs(dwPenColor);
            }
            IntPtr hFont = CreateFont
                           (
                font.FontSize, 0,
                0, 0,
                font.Bold ? FW_BOLD : FW_REGULAR,
                0, 0, 0,
                GB2312_CHARSET,
                OUT_DEFAULT_PRECIS,
                CLIP_DEFAULT_PRECIS,
                DEFAULT_QUALITY,
                DEFAULT_PITCH | FF_SWISS,
                font.FontFamily
                           );
            SIZE size    = TextSize(text, font);
            RECT newRect = new RECT(mp.x + m_offsetX, mp.y + m_offsetY, mp.x + m_offsetX + size.cx, mp.y + m_offsetY + size.cy);

            SetBkMode(m_hDC, TRANSPARENT);
            SetTextColor(m_hDC, (int)dwPenColor);
            IntPtr hOldFont = SelectObject(m_hDC, hFont);

            DrawText(m_hDC, text, -1, ref newRect, 0 | DT_NOPREFIX);
            SelectObject(m_hDC, hOldFont);
            DeleteObject(hFont);
        }
示例#3
0
 /// <summary>
 /// 绘制直线
 /// </summary>
 /// <param name="color">颜色</param>
 /// <param name="width">宽度</param>
 /// <param name="lineStyle">样式</param>
 /// <param name="x1">第一个点的横坐标</param>
 /// <param name="y1">第一个点的纵坐标</param>
 /// <param name="x2">第二个点的横坐标</param>
 /// <param name="y2">第二个点的纵坐标</param>
 public void DrawLine(double dwPenColor, int width, int style, int x1, int y1, int x2, int y2)
 {
     if (dwPenColor == COLOR.Empty())
     {
         return;
     }
     m_g.DrawLine(MCommon.Instance.GetPen(dwPenColor, width, style), x1 + m_offsetX, y1 + m_offsetY, x2 + m_offsetX, y2 + m_offsetY);
 }
示例#4
0
        /// <summary>
        /// 绘制矩形
        /// </summary>
        /// <param name="color">颜色</param>
        /// <param name="lineWidth">宽度</param>
        /// <param name="lineStyle">样式</param>
        /// <param name="rect">矩形区域</param>
        public void DrawRect(double dwPenColor, int width, int style, RECT rect)
        {
            if (dwPenColor == COLOR.Empty())
            {
                return;
            }
            Rectangle gdiPlusRect = new Rectangle(rect.left + m_offsetX, rect.top + m_offsetY, rect.right - rect.left, rect.bottom - rect.top);

            m_g.DrawRectangle(MCommon.Instance.GetPen(dwPenColor, width, style), gdiPlusRect);
        }
示例#5
0
 /// <summary>
 /// 绘制大量直线
 /// </summary>
 /// <param name="color">颜色</param>
 /// <param name="lineWidth">宽度</param>
 /// <param name="dashPattern">样式</param>
 public void DrawPolyline(double dwPenColor, int width, int style, POINT[] points)
 {
     if (dwPenColor == COLOR.Empty())
     {
         return;
     }
     Point[] gdiPlusPoints = new Point[points.Length];
     for (int i = 0; i < gdiPlusPoints.Length; i++)
     {
         Point p = new Point(points[i].x + m_offsetX, points[i].y + m_offsetY);
         gdiPlusPoints[i] = p;
     }
     m_g.DrawLines(MCommon.Instance.GetPen(dwPenColor, width, style), gdiPlusPoints);
 }
示例#6
0
        /// <summary>
        /// 填充椭圆
        /// </summary>
        /// <param name="color">颜色</param>
        /// <param name="left">左侧坐标</param>
        /// <param name="top">顶部左标</param>
        /// <param name="right">右侧坐标</param>
        /// <param name="bottom">底部坐标</param>
        public void FillEllipse(double dwPenColor, int left, int top, int right, int bottom)
        {
            if (dwPenColor == COLOR.Empty())
            {
                return;
            }
            if (dwPenColor < 0)
            {
                dwPenColor = Math.Abs(dwPenColor);
            }
            IntPtr brush = CreateSolidBrush((int)dwPenColor);

            SelectObject(m_hDC, brush);
            Ellipse(m_hDC, left + m_offsetX, top + m_offsetY, right + m_offsetX, bottom + m_offsetY);
            DeleteObject(brush);
        }
示例#7
0
        /// <summary>
        /// 填充矩形
        /// </summary>
        /// <param name="color">颜色</param>
        /// <param name="rect">矩形区域</param>
        public void FillRect(double dwPenColor, RECT rect)
        {
            if (dwPenColor == COLOR.Empty())
            {
                return;
            }
            if (dwPenColor < 0)
            {
                dwPenColor = Math.Abs(dwPenColor);
            }
            RECT   newRect = new RECT(rect.left + m_offsetX, rect.top + m_offsetY, rect.right + m_offsetX, rect.bottom + m_offsetY);
            IntPtr brush   = CreateSolidBrush((int)dwPenColor);

            SelectObject(m_hDC, brush);
            FillRect(m_hDC, ref newRect, brush);
            DeleteObject(brush);
        }
示例#8
0
        /// <summary>
        /// 绘制矩形
        /// </summary>
        /// <param name="color">颜色</param>
        /// <param name="lineWidth">宽度</param>
        /// <param name="lineStyle">样式</param>
        /// <param name="left">左侧坐标</param>
        /// <param name="top">顶部左标</param>
        /// <param name="right">右侧坐标</param>
        /// <param name="bottom">底部坐标</param>
        public void DrawRect(double dwPenColor, int width, int style, int left, int top, int right, int bottom)
        {
            if (dwPenColor == COLOR.Empty())
            {
                return;
            }
            if (dwPenColor < 0)
            {
                dwPenColor = Math.Abs(dwPenColor);
            }
            IntPtr hPen    = CreatePen(style, width, (int)dwPenColor);
            IntPtr hOldPen = SelectObject(m_hDC, hPen);

            SelectObject(m_hDC, GetStockObject(HOLLOW_BRUSH));
            Rectangle(m_hDC, left + m_offsetX, top + m_offsetY, right + m_offsetX + 1, bottom + m_offsetY);
            SelectObject(m_hDC, hOldPen);
            DeleteObject(hPen);
        }
示例#9
0
        /// <summary>
        /// 绘制直线
        /// </summary>
        /// <param name="color">颜色</param>
        /// <param name="width">宽度</param>
        /// <param name="lineStyle">样式</param>
        /// <param name="x1">第一个点的横坐标</param>
        /// <param name="y1">第一个点的纵坐标</param>
        /// <param name="x2">第二个点的横坐标</param>
        /// <param name="y2">第二个点的纵坐标</param>
        public void DrawLine(double dwPenColor, int width, int style, int x1, int y1, int x2, int y2)
        {
            if (dwPenColor == COLOR.Empty())
            {
                return;
            }
            if (dwPenColor < 0)
            {
                dwPenColor = Math.Abs(dwPenColor);
            }
            IntPtr hPen    = CreatePen(style, width, (int)dwPenColor);
            IntPtr hOldPen = SelectObject(m_hDC, hPen);

            MoveToEx(m_hDC, x1 + m_offsetX, y1 + m_offsetY, IntPtr.Zero);
            LineTo(m_hDC, x2 + m_offsetX, y2 + m_offsetY);
            SelectObject(m_hDC, hOldPen);
            DeleteObject(hPen);
        }
示例#10
0
        /// <summary>
        /// 填充多边形
        /// </summary>
        /// <param name="color">颜色</param>
        /// <param name="points">点的数组</param>
        public void FillPolygon(double dwPenColor, POINT[] points)
        {
            if (dwPenColor == COLOR.Empty())
            {
                return;
            }
            if (dwPenColor < 0)
            {
                dwPenColor = Math.Abs(dwPenColor);
            }
            POINT[] newPoints = new POINT[points.Length];
            for (int i = 0; i < points.Length; i++)
            {
                POINT newPoint = new POINT(points[i].x + m_offsetX, points[i].y + m_offsetY);
                newPoints[i] = newPoint;
            }
            IntPtr brush = CreateSolidBrush((int)dwPenColor);

            SelectObject(m_hDC, brush);
            Polygon(m_hDC, newPoints, newPoints.Length);
            DeleteObject(brush);
        }
示例#11
0
        /// <summary>
        /// 绘制大量直线
        /// </summary>
        /// <param name="color">颜色</param>
        /// <param name="lineWidth">宽度</param>
        /// <param name="dashPattern">样式</param>
        public void DrawPolyline(double dwPenColor, int width, int style, POINT[] points)
        {
            if (dwPenColor == COLOR.Empty())
            {
                return;
            }
            if (dwPenColor < 0)
            {
                dwPenColor = Math.Abs(dwPenColor);
            }
            POINT[] newPoints = new POINT[points.Length];
            for (int i = 0; i < points.Length; i++)
            {
                POINT newPoint = new POINT(points[i].x + m_offsetX, points[i].y + m_offsetY);
                newPoints[i] = newPoint;
            }
            IntPtr hPen    = CreatePen(style, width, (int)dwPenColor);
            IntPtr hOldPen = SelectObject(m_hDC, hPen);

            Polyline(m_hDC, newPoints, newPoints.Length);
            SelectObject(m_hDC, hOldPen);
            DeleteObject(hPen);
        }