社区
界面
帖子详情
【MFC】 GDI绘图
wojiushi3344
2010-08-31 08:27:52
大家好,我才学MFC没好久,现在像大家请教个问题是不是在用CDC绘图的时候,每绘制一张图片都得创建一个兼容DC,然后再用SelectObject()函数把位图句柄选进DC中,最后绘制.
在绘制多张图片的时候能不能只创建一个兼容DC。因为我有几十张图片,如果每张图片我都去创建一个的话,那样好麻烦额!如果能的话具体是怎样实现的。
...全文
164
14
打赏
收藏
【MFC】 GDI绘图
大家好,我才学MFC没好久,现在像大家请教个问题是不是在用CDC绘图的时候,每绘制一张图片都得创建一个兼容DC,然后再用SelectObject()函数把位图句柄选进DC中,最后绘制. 在绘制多张图片的时候能不能只创建一个兼容DC。因为我有几十张图片,如果每张图片我都去创建一个的话,那样好麻烦额!如果能的话具体是怎样实现的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wojiushi3344
2010-09-01
打赏
举报
回复
[Quote=引用 9 楼 windsonzhl 的回复:]
兼容DC(内存DC)实际上是双缓冲处理,你直接用屏幕DC画也是可以的。
见5L。
[/Quote]
你说的我还没有试过,还不知道得行不得行?今天回去试一下!
风之子赛拉飞尔
2010-09-01
打赏
举报
回复
应该说BitBlt和StretchBlt等一组GDI方法都是像素操作方法,
而不是位图输出方法。直接输出位图可以使用图案画刷。
CDC::CreatePatternBrush() 或 CDC::CreateDIBPatternBrush()
说到底可直接输出的位图数据就是像素数据,即BYTE指针,CBitmap或HBITMAP
都只是像素数据的封装形式而已。图像处理的高手应习惯于直接处理像素数据。
OpenGL提供的位图或纹理图像输出方法就是以像素数据指针为参数的。
风之子赛拉飞尔
2010-09-01
打赏
举报
回复
[Quote=引用 11 楼 wojiushi3344 的回复:]
引用 9 楼 windsonzhl 的回复:
兼容DC(内存DC)实际上是双缓冲处理,你直接用屏幕DC画也是可以的。
见5L。
你说的我还没有试过,还不知道得行不得行?今天回去试一下!
[/Quote]
噢……有段时间没碰GDI了(GDI+用的比较多),想了想,输出位图的话,好像还真是需要一个辅助DC。
pshchao
2010-09-01
打赏
举报
回复
自己封装个函数,有设备DC和内存DC 每次绘制调用这个函数就行了
BOOL Draw(CDC *pDC,CDC *memDC)
{
//用memDC选入图片 画到pDC上
}
仅供参考
wojiushi3344
2010-08-31
打赏
举报
回复
[Quote=引用 3 楼 joyzml 的回复:]
...
SelectObject(&bitmapA);
Bitblt(...
SelectObject(&bitmapB);
Bitblt(...
...
SelectObject(pOldbmp);
...
[/Quote]
我知道这样可以但是能不能有更方便的
wojiushi3344
2010-08-31
打赏
举报
回复
[Quote=引用 5 楼 gameslq 的回复:]
>>在绘制多张图片的时候能不能只创建一个兼容DC。因为我有几十张图片,如果每张图片我都去创建一个的话,那样好麻烦额!如果能的话具体是怎样实现的。
双缓冲方式:
如果想在一个DC中显示多张图片,建立一个主兼容DC 然后再建立位图兼容DC
1.把图A选进位图兼容DC 然后Bitblt(... 到兼容DC
2.把图B选进位图兼容DC 然后Bitblt(... 到兼容DC
普通方式
……
[/Quote]
哥子你回答的貌似没看懂我的意思,我的意思是说在绘制多张图片的时候,能不能不用为每张图片都创建个兼容DC。
周晓荣
2010-08-31
打赏
举报
回复
[Quote=引用 5 楼 gameslq 的回复:]
>>在绘制多张图片的时候能不能只创建一个兼容DC。因为我有几十张图片,如果每张图片我都去创建一个的话,那样好麻烦额!如果能的话具体是怎样实现的。
双缓冲方式:
如果想在一个DC中显示多张图片,建立一个主兼容DC 然后再建立位图兼容DC
1.把图A选进位图兼容DC 然后Bitblt(... 到兼容DC
2.把图B选进位图兼容DC 然后Bitblt(... 到兼容DC
普通方式
……
[/Quote]
很好~~~学习了。
gameslq
2010-08-31
打赏
举报
回复
>>在绘制多张图片的时候能不能只创建一个兼容DC。因为我有几十张图片,如果每张图片我都去创建一个的话,那样好麻烦额!如果能的话具体是怎样实现的。
双缓冲方式:
如果想在一个DC中显示多张图片,建立一个主兼容DC 然后再建立位图兼容DC
1.把图A选进位图兼容DC 然后Bitblt(... 到兼容DC
2.把图B选进位图兼容DC 然后Bitblt(... 到兼容DC
普通方式
如果想在一个DC中显示多张图片,建立一个主兼容DC
1.把图A选进主兼容DC,然后Bitblt(... 到窗口DC
2.把图B选进主兼容DC,然后Bitblt(... 到窗口DC
可以找谢例子看看,很快就明白了.
努力学习_提高自己
2010-08-31
打赏
举报
回复
CDC,我的理解是,可以看成一块黑板,你可以在上面绘图,想要绘制新图是,擦除原有的图(selectobject新的图)即可。
GARY
2010-08-31
打赏
举报
回复
...
SelectObject(&bitmapA);
Bitblt(...
SelectObject(&bitmapB);
Bitblt(...
...
SelectObject(pOldbmp);
...
bragi523
2010-08-31
打赏
举报
回复
一个DC,多次SelectObject就行了啊
Eleven
2010-08-31
打赏
举报
回复
你要一次显示多张还是连续显示多张?
jack54877012
2010-08-31
打赏
举报
回复
[Quote=引用 7 楼 wojiushi3344 的回复:]
哥子你回答的貌似没看懂我的意思,我的意思是说在绘制多张图片的时候,能不能不用为每张图片都创建个兼容DC。
[/Quote]
按照我的理解,绘图的时候必须要选进DC,不一定要创建,你给他选进去不就行了,只创建一个好咯。但是如果不选进DC里那是不可能的吧。
风之子赛拉飞尔
2010-08-31
打赏
举报
回复
兼容DC(内存DC)实际上是双缓冲处理,你直接用屏幕DC画也是可以的。
见5L。
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第13章
MFC
GDI
与
绘图
MFC
程序设计详细实例 第1
MFC
GDI
绘图
基础
一.关于
GDI
的基本概念 什么是
GDI
? Windows
绘图
的实质就是利用Windows提供的图形设备接口
GDI
(Graphics Device Interface)将图形绘制在显示器上。 在Windows操作系统中,动态链接库C:/WINDOWS/system32/
gdi
32.dll(
GDI
Client DLL)中定义了
GDI
函数,实现与设备无关的包括屏幕上输出像素、在打印机上输出硬拷贝以及绘制Windows用户界面功能。在Visual C++6.0中的头文件C:/Program Files/Microsoft Visual Studio/VC98/Include/win
gdi
.h和Visual Studio 2005中的头文件C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/Win
GDI
.h是访问
gdi
32.dll库文件的钥匙。下面我们大致浏览一下win
gdi
.h(included in Windows.h)头文件: /* Bitmap Header Definition */定义了BITMAP位图结构 /* Mapping Modes */定义了DC中的坐标映射方式,包括以下常用函数: SetMapMode、SetViewportExtEx、SetViewportOrgEx、 SetWindowExtEx 、SetWindowOrgEx。
C++
MFC
实战速成教程(VS2013)上
让零基础朋友快速掌握
MFC
的开发,进入到C++的Windows编程之殿堂。
MFC
规模庞大,结构复杂,导致很多初学者学习困难。本教程,则排除一切对初步者的干扰,从
MFC
庞大的结构中,单刀直入,取出最核心的类,以简明易懂的方式,剖析于学员面前。并通过纯手工方式编写
MFC
的程序,把
MFC
的基础架构,功能,由来,作用一一详细展示。以此为基础,进而把
MFC
的各个类,以及类之间的协作关系融汇贯通。
MFC
的
GDI
绘图
(TCS~T)
作者:TCS~T 技术支持:2827445707 技术群;861627004
MFC
的
GDI
绘图
mfc
GDI
绘图
的小例子
MFC
写的一个画扇形的小程序。 用到了 onmousemove onLButtonDown等命令。 供初学者参考
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章