美文网首页
MFC中创建透明画刷

MFC中创建透明画刷

作者: 朋小谅ya | 来源:发表于2020-08-06 10:15 被阅读0次

MFC绘图可以很明显的看到先前画的矩形会被后来画的矩形所覆盖掉,这时候我需要后来画的矩形透明。那么我们要怎么来实现呢?

方法一

可以利用GetStockObject 这个函数来实现,GetStockObject 函数获取的是一个画刷句柄。

//创建透明画刷
RECT rect;
rect.top = 0;
rect.left = 0;
rect.right = 100;
rect.bottom = 100;
static HBRUSH m_brush;  //画刷句柄
m_brush = (HBRUSH)GetStockObject(NULL_BRUSH);
//将空画刷选入设备描述表  
 SelectObject(hdc, m_brush);
 //绘制一个矩形  
 Rectangle(hdc, one_w, y, one_w + 100, y+100);//绘制一个填充为RGB(60,38,99)的矩形

以上虽然能实现看到先前绘制的矩形,但是我想要的是颜色透明。显然方法一是不能满足我的,找了很多资料并没有解决,希望看到的网友能赐教,感谢!!!
颜色透明实现不了那我们更换思路,添加背景色。

方法二

使用函数SetBkColor,SetBkMode设置整个窗口的背景色。SetBkColor是背景颜色,SetBkMode是背景模式。

// SetMode 模式
SetBkColor(hdc, RGB(255, 255, 0));
SetBkMode(hdc, TRANSPARENT);
TextOutA(hdc, 256, 24, "hello world", 11);
// 非SetMode模式
SetBkColor(hdc, RGB(255, 255, 0));
// SetBkMode(hdc, TRANSPARENT);
TextOutA(hdc, 256, 24, "hello world", 11);

注意:此方法只能用于文本,填充画刷和画笔不是实线时。看下图


ponglyon.png

测试代码:

//setp2
SetBkColor(hdc, RGB(255, 255, 0));
TextOutA(hdc, 0, 600, "hello world", strlen("hello world"));
//SetBkMode(hdc, OPAQUE);
//1.用m_brush填充矩形
static HBRUSH m_brush;  //画刷句柄 用来填充图形
m_brush = CreateHatchBrush(HS_BDIAGONAL, RGB(255, 255, 255));
RECT rect;
rect.top = 600;
rect.left = 100;
rect.right = 100 + 100;
rect.bottom = 600 + 100;
FillRect(hdc, &rect, m_brush);
//2.用虚线画笔画一条直线
HPEN hPen;
hPen = CreatePen(PS_DASH, 1, RGB(0, 255, 0));
SelectObject(hdc, hPen);
MoveToEx(hdc, 300, 600, NULL);
LineTo(hdc, 400, 0);

方法二会将整个窗口添加上背景色,不理想。

方法三

FillRect()函数:用指定的画刷填充矩形, 函数包括矩形的左上边界,但不包括矩形的右下边界。

RECT rect;
rect.top = one_w;
rect.left = y;
rect.right = one_w + 100;
rect.bottom = y+ 100;
static HBRUSH m_brush;  //画刷句柄 用来填充图形
m_brush = CreateHatchBrush(HS_BDIAGONAL, RGB(255, 255, 0));
FillRect(hdc, &rect, m_brush);

在线求更完美创建透明颜色画刷的方法!!!

相关文章

  • MFC中创建透明画刷

    MFC绘图可以很明显的看到先前画的矩形会被后来画的矩形所覆盖掉,这时候我需要后来画的矩形透明。那么我们要怎么来实现...

  • 10.9学习总结

    今天学了MFC中的图形绘制,讲了其中图形绘制的设备环境,自定义画笔,颜色对话框,在图形中着色,定义画刷,设置字...

  • 面向小白的C语言教程(005)-创建MFC界面程序

    创建MFC界面程序 1、创建MFC程序: 直接搜索MFC 如果搜索不到,那就是没安装,连上网络,找到你的Visua...

  • MFC

    MFC默认生成工程APP 类,此类是继承自MFC中 thread 基础类,源文件代码中会创建该类的全局变量对象,所...

  • ObjectARX创建MFC

    需要在CPP文件中加入 #include "StdAfx.h" #include "resource.h"

  • 芦继超9.25总结

    今天老师讲了MFC的创建,主要学习了单文档界面的应用程序,还有一些运行的原理。 在mfc创建中所包含的文件,组成结...

  • 制作带MFC界面的DLL以及调用

    1、制作带MFC界面的DLL 1)新建MFC DLL项目,项目名称“MyDLL”,创建新解决方案,解决方案名称为“...

  • MFC动态按钮的创建及其消息响应 和 自定义消息]

    MFC动态按钮的创建及其消息响应 和 自定义消息

  • 2017-10-9学习总结

    星期一 多云 今天学习了图形的绘制,就是在原来学的MFC窗口中增加绘图的工具, 有画笔、画刷等工具,圆、直线等...

  • [windows] _ windows基础 _ 03 绘图工具与

    画笔操作 创建画笔: 画刷和颜色 系统自定义了7种比较使用到的画刷. 通过getstockobject(nBrus...

网友评论

      本文标题:MFC中创建透明画刷

      本文链接:https://www.haomeiwen.com/subject/svfkrktx.html