首页 > 其他分享 >GDI+画刷(LinearGradientBrush(三))

GDI+画刷(LinearGradientBrush(三))

时间:2023-07-25 16:34:28浏览次数:41  
标签:rt 画刷 pGradientMode LinearGradientTwoDlg MemDCIndicator LinearGradientBrush pLin

3、LinearGradientBrush(Rect&,Color&,Color&,LinearGradientMode)

  对四种路径渐变方式进行代码效果展示,如下:

  变量定义:

CDC MemDCIndicator;
CBitmap MemBitmapIndicator;
CDC *pDC;
CComboBox m_pGradientMode;

  关键代码:

 1 void LinearGradientTwoDlg::DoDataExchange(CDataExchange* pDX)
 2 {
 3     CDialogEx::DoDataExchange(pDX);
 4     DDX_Control(pDX, IDC_COMBO1, m_pGradientMode);
 5 }
 6 
 7 BEGIN_MESSAGE_MAP(LinearGradientTwoDlg, CDialogEx)
 8     ON_WM_PAINT()
 9     ON_CBN_SELCHANGE(IDC_COMBO1, &LinearGradientTwoDlg::OnCbnSelchangeCombo1)
10 END_MESSAGE_MAP()
11 
12 void LinearGradientTwoDlg::OnPaint()
13 {
14     CPaintDC dc(this);
15     DrawFunction();
16 }
17 
18 BOOL LinearGradientTwoDlg::OnInitDialog()
19 {
20     CDialogEx::OnInitDialog();
21     m_pGradientMode.InsertString(0,L"LinearGradientModeHorizontal");
22     m_pGradientMode.InsertString(1, L"LinearGradientModeVertical");
23     m_pGradientMode.InsertString(2, L"LinearGradientModeForwardDiagonal");
24     m_pGradientMode.InsertString(3, L"LinearGradientModeBackwardDiagonal");
25     m_pGradientMode.SetCurSel(0);
26     m_pLinearGradientMode = LinearGradientModeHorizontal;
27     return TRUE;            
28 }
29 
30 
31 void LinearGradientTwoDlg::DrawFunction()
32 {
33     CRect rt;
34     GetClientRect(&rt);
35     pDC = GetDC();
36     MemDCIndicator.CreateCompatibleDC(pDC);
37     MemBitmapIndicator.CreateCompatibleBitmap(pDC, rt.Width(), rt.Height() * 2/ 3);
38     MemDCIndicator.SelectObject(&MemBitmapIndicator);
39     MemDCIndicator.FillSolidRect(rt, RGB(100, 100, 100));
40 
41     Graphics graphics(MemDCIndicator);
42     graphics.SetSmoothingMode(SmoothingModeHighQuality);
43     LinearGradientBrush lbr(Rect(0, 0, rt.Width(), rt.Height() * 2/ 3), Color(255, 0, 0), Color(0, 255, 0), m_pLinearGradientMode);
44     graphics.FillRectangle(&lbr, rt.left, rt.top, rt.Width(), rt.Height() * 2/ 3);
45     pDC->BitBlt(rt.left, rt.top, rt.Width(), rt.Height() * 2/ 3, &MemDCIndicator, 0, 0, SRCCOPY);
46     MemDCIndicator.DeleteDC();
47     MemBitmapIndicator.DeleteObject();
48     ReleaseDC(pDC);
49 }
50 void LinearGradientTwoDlg::OnCbnSelchangeCombo1()
51 {
52     switch (m_pGradientMode.GetCurSel()) {
53     case 0:
54         m_pLinearGradientMode = LinearGradientModeHorizontal;
55         break;
56     case 1:
57         m_pLinearGradientMode = LinearGradientModeVertical;
58         break;
59     case 2:
60         m_pLinearGradientMode = LinearGradientModeForwardDiagonal;
61         break;
62     case 3:
63         m_pLinearGradientMode = LinearGradientModeBackwardDiagonal;
64         break;
65     default:
66         break;
67     }
68     Invalidate();
69 }

 

标签:rt,画刷,pGradientMode,LinearGradientTwoDlg,MemDCIndicator,LinearGradientBrush,pLin
From: https://www.cnblogs.com/missyou0813/p/17573361.html

相关文章

  • GDI+画刷(LinearGradientBrush(二))
    2、LinearGradientBrush(Rect&,Color&,Color&,REAL,BOOL),代码演示结果如下所示:注:Rect规定画刷一次所绘制的范围,REAL值是指定颜色渐变的方向变量定义:1CDCMemDCIndicator;2CBitmapMemBitmapIndicator;3CDC*pDC;45REALm_pRealValue;6CSliderCtrlm_pSlid......
  • GDI+画刷(HatchBrush)
    HatchBrush在构造过程中需要指定画刷类型、前景色、后景色三项内容,其中画刷类型在官方文档中给出的枚举类型如下所示:1typedefenumHatchStyle{2HatchStyleHorizontal,3HatchStyleVertical,4HatchStyleForwardDiagonal,5HatchStyleBackwardDiagonal,6Hatc......
  • GDI+颜色(Color)
    构造方法1:Color::Color(BYTEr,BYTEg,BYTEb)构造方法中三个参数分别为RGB值,取值范围(0-255),下面代码呈现在RGB取值下进行线的绘制: 1Graphicsgraphics(dc);23Colorclr(255,0,0);4Colorclg(0,255,0);5Colorclb(0,0,255);67Penpr(clr,2.0......
  • GDI+配置(MFC)
    什么是GDI+?GDI+是WinXP系统与WinServer2003系统的一部分,为系统二维绘图提供支撑,GDI+是对GDI(GraphicsDeviceInterface)的升级,增加了相关属性及优化了相关属性。GDI+在MFC中配置: /**********************GDI预定义****************************/#ifndefULONG_PTR#def......
  • aardio中获取网络图片经GDI处理后保存到本地
    下面的代码是将图片保存到/img目录下:代码如下:importprocess;importfsys.stream;importgdip.bitmap;importinet.http;//获取一个网络图片varpngData=inet.http().get("http://www.baidu.com/img/baidu_logo.gif");//转换为GDI对象处理varbitmap=gdip.bitm......
  • 19cRAC更换ocr_votingdisk所在的磁盘组
    0.需求OCR和Votingdisk目前存放在+DG_GRID磁盘组中,计划将OCR和Votingdisk临时迁移至+DG_DATA磁盘组,然后重建+DG_GRID磁盘组,等+DG_GRID磁盘组重建完成后,再将OCR和Votingdisk最终迁移回+DG_GRID磁盘组1.磁盘组信息[grid@19crac1~]$asmcmdlsdgState   Type   Rebal Se......
  • 如何洞察 C# 程序的 GDI 句柄泄露
    一:背景1.讲故事前段时间有位朋友找到我,说他的程序界面操作起来很慢并且卡顿等一些不正常现象,从任务管理器看了下GDI句柄已经到1w了,一时也找不出什么代码中哪里有问题,让我帮忙看下,其实这种问题看内存dump作用不是很大,主要是写脚本很麻烦,这一篇我们就来简单聊聊如何洞察此类问题......
  • 如何洞察 C# 程序的 GDI 句柄泄露
    一:背景1.讲故事前段时间有位朋友找到我,说他的程序界面操作起来很慢并且卡顿等一些不正常现象,从任务管理器看了下GDI句柄已经到1w了,一时也找不出什么代码中哪里有问题,让我帮忙看下,其实这种问题看内存dump作用不是很大,主要是写脚本很麻烦,这一篇我们就来简单聊聊如何洞察此类问题......
  • 记一次ubuntu系统磁盘无法挂载之gdisk命令的使用
    可以使用fdisk-l查看到磁盘分区信息但实际上并未成功(base)root@ywb:~#fdisk-l......TheprimaryGPTtableiscorrupt,butthebackupappearsOK,sothatwillbeused.Disk/dev/sde:4.6TiB,5000981077504bytes,9767541167sectorsUnits:sectorsof1*51......
  • 如何洞察 C# 程序的 GDI 句柄泄露
    一:背景1.讲故事前段时间有位朋友找到我,说他的程序界面操作起来很慢并且卡顿等一些不正常现象,从任务管理器看了下GDI句柄已经到1w了,一时也找不出什么代码中哪里有问题,让我帮忙看下,其实这种问题看内存dump作用不是很大,主要是写脚本很麻烦,这一篇我们就来简单聊聊如何洞察此类......