MFC 用gdi绘制填充多边形区域

MFC 用gdi绘制填充多边形区域

这里的代码是实现一个三角形的绘制,并用刷子填充颜色 在OnPaint()函数里面

运用的是给定的三角形的三个点,很多个点可以绘制多边形

[cpp] view plaincopy

  1. CBrush br(RGB(40,130,170));

  2. CRgn rgn;

  3. CPoint arrpt[3];

  4. arrpt[0].x = m_rcAT.right-8;

  5. arrpt[0].y = m_rcAT.top+m_rcAT.Height()*2/5;

  6. arrpt[1].x = arrpt[0].x - 12;

  7. arrpt[1].y = arrpt[0].y;

  8. arrpt[2].x = arrpt[0].x - 6;

  9. arrpt[2].y = arrpt[0].y + 6;
  10. if( rgn.CreatePolygonRgn(arrpt, 3, ALTERNATE) && arrpt[0].x > 0)

  11. {

  12. dc.FillRgn(&rgn, &br);

  13. dc.MoveTo(arrpt[0]);

  14. dc.LineTo(arrpt[1]);

  15. dc.MoveTo(arrpt[1]);

  16. dc.LineTo(arrpt[2]);

  17. dc.MoveTo(arrpt[2]);

  18. dc.LineTo(arrpt[0]);

  19. }
  20. br.DeleteObject();

  21. rgn.DeleteObject();

此外可以用相关函数绘制圆角矩形区域,椭圆等等。

MFC 用gdi绘制填充多边形区域,码迷,mamicode.com

时间: 2024-10-23 21:58:48

MFC 用gdi绘制填充多边形区域的相关文章

使用高德地图绘制多边形区域

最近遇到一个需求,在网页上面编辑多边形的区域,并且需要能够判断一个点是否在这个多边形区域里面. 看了一下高德地图的jsapi,简单的做了一个demo. 1.你需要一个高德地图的账号,注册地址点击这里 2.登陆进去创建一个应用,这个时候就会给你一个对应的Key 3.查看高德地图的的demo,进入示例中心 4.学习一下左侧分类里面的 点标记 的示例,点标记里有涉及到高德地图事件,以及基础的类. 5.看完上面的,接下来我们接着学习折线,多边形,圆,这里我们就可以接触到AMap.Polygon这个类,以

MFC和GDI+一起使用

VS2010,新建MFC项目,在头文件stdafx.h中添加: 1 #include <gdiplus.h> 2 using namespace Gdiplus; 3 #pragma comment (lib,"Gdiplus.lib") 定义类的变量 ULONG_PTR   gdiplusToken; 在BOOL CGDALDesktopApp::InitInstance()中添加: 1 GdiplusStartupInput gdiplusStartupInput;2

C#利用GDI+绘制旋转文字等效果

C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经过不少的计算过程.利用下面的类可以实现该功能. [csharp] view plaincopy using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D;

C#利用GDI+绘制旋转文字等效果实例

本文实例讲述了C#利用GDI+绘制旋转文字等效果的方法,是非常实用的技巧.分享给大家供大家参考之用.具体如下: C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经过不少的计算过程.利用下面的类可以实现该功能. 具体实现代码如下: using System; using System.Collections.Generic; using System

ExtFloodFill 可以填充不规则区域

ExtFloodFill function The ExtFloodFill function fills an area of the display surface with the current brush. Syntax C++ BOOL ExtFloodFill( _In_  HDC hdc, _In_  int nXStart, _In_  int nYStart, _In_  COLORREF crColor, _In_  UINT fuFillType ); Parameter

使用GDI绘制验证码

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace 使用GDI绘制验证码B { public parti

GDI+绘制渐变色

例1: void CTextDlg::OnPaint(){Graphics graphics(this->m_hWnd); LinearGradientBrush linGrBrush( Point(0,0), Point(200,0), Color(255,255,0,0), Color(255,0,0,255)); graphics.FillRectangle(&linGrBrush, 0, 0, 200, 200);} 例2: Graphics graphics(dc.GetSafeH

新手们的GDI+绘制方格

//绘制panel控件触发的事件 //不可在窗体加载时绘制方格        private void panel1_Paint(object sender, PaintEventArgs e)        {            int rowNum = 12;//行数            int colNum = 15;//列数:            Pen pen = new Pen(Color.Black);//实例化一个"画笔"            Brush br

D2D引擎与GDI\GDI+绘制效果对比

本例主要是对比D2D和GDI在绘制文字.线条的区别,以及D2D与GDI+在绘制图片时的区别. D2D是基于COM组件开发的,使用前的CoInitialize(NULL)是必须的:另外,GDI+的初始化GdiplusStartup()也别忘了. 废话少说,完整代码如下: // D2DDemo.cpp : 定义应用程序的入口点. // #include "stdafx.h" #include "D2DDemo.h" #include <D2D1.h> #in