关于双缓存绘图!

ssbelle 2006-01-16 03:34:15
我在view的ondraw里用到了双缓存绘图 但是在绘图的时候又要在内存中画的那幅图上bitblt一幅图像 这个时候的dc该怎么选取呢? 有些乱了感觉 总是画不出来 只能画除了bitblt的之外的gdi绘图
...全文
891 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssbelle 2006-01-17
  • 打赏
  • 举报
回复
up
ssbelle 2006-01-17
  • 打赏
  • 举报
回复
哪位能给个例子? 不胜感激
ssbelle 2006-01-17
  • 打赏
  • 举报
回复
解决了 使用了StretchBlt函数 谢谢大家 结贴
TianChong 2006-01-17
  • 打赏
  • 举报
回复
要使用双DC分工协作啊
ssbelle 2006-01-17
  • 打赏
  • 举报
回复
现在是使用Brush创建一个位图刷子CreatePatternBrush 然后再PatBlt上去 但是看msdn上说被用做Brush的Bitmap有个限制,就是它的如果宽度和高度不能大于8x8,如果比8x8大,系统只取这个位图左上角8x8大小作为填充的Brush 我想这个大概就是我的图片显示不正常的原因
我想知道怎样显示正常的图片呢。。。。
ssbelle 2006-01-17
  • 打赏
  • 举报
回复
不行啊 用哪个DC都是这样子 而且在MemDC bitblt之前之后都是这样的
cici2006 2006-01-17
  • 打赏
  • 举报
回复
两个DC一起呀。应该可以的。
ssbelle 2006-01-17
  • 打赏
  • 举报
回复
多谢 现在使用了PatBlt来在那个矩形上贴图 贴上以后不闪了 但是效果不对。。。就好像是
先将那个小图形逐个逐个的全部贴在背景上 然后再在上边贴画好的图
在拖动控件的时候 好像将图挖了一个小矩形 然后背景的小图标在矩形里动 不是控件的图片一直和控件保持统一的动
请问这是怎么回事呢?》
蒋晟 2006-01-17
  • 打赏
  • 举报
回复
参考DrawCli示例
ssbelle 2006-01-17
  • 打赏
  • 举报
回复
-_-!
菜牛 2006-01-16
  • 打赏
  • 举报
回复
双缓冲需要一个内存位图和一个内存DC,贴位图又需要一个内存DC,选入你的位图。不要局限于一个内存DC。
ding_net 2006-01-16
  • 打赏
  • 举报
回复
不懂,帮顶,呵呵
ssbelle 2006-01-16
  • 打赏
  • 举报
回复
up
哪位大哥再给看一下 谢谢!
ssbelle 2006-01-16
  • 打赏
  • 举报
回复
如果在缓存贴图之前画 会被贴图贴掉
如果在缓存贴图之后画 还是会闪 因为重新绘图时是先在它上面铺背景色再画图的
至于先load进来再画图。。。。。没明白什么意思。。。
ssbelle 2006-01-16
  • 打赏
  • 举报
回复
没明白 试了半天都不行 画了一个小黑块上去
xiaoqiqixiao 2006-01-16
  • 打赏
  • 举报
回复
你应该新建一个函数
OnDrawMem(CDC* pMemDC)来绘制你的内存DC,这个pMemDC和普通的DC一样的用法(普通DC中的BitBlt怎么用总知道吧,提示:还得建一个内存DC的)
这样可以避免混淆
lixiaosan 2006-01-16
  • 打赏
  • 举报
回复
那你就先load你的图片,然后再画图
ssbelle 2006-01-16
  • 打赏
  • 举报
回复
我的意思是这样的 在绘图的时候又要贴图片 如下:

CDC MemDC;
CBitmap bitmap;

MemDC.CreateCompatibleDC(NULL);
MemBitmap.CreateCompatibleBitmap(pDC, nWidth, nHeight);

CBitmap *pOldBit=MemDC.SelectObject(&bitmap);

//绘图
MemDC.BitBlt(.....); //贴图 但是不能显示

pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);

bitmap.DeleteObject();
MemDC.DeleteDC();

这种情况该怎么办呢?
lixiaosan 2006-01-16
  • 打赏
  • 举报
回复
在选入位图的dc上画即可。。。

CDC MemDC;
CBitmap bitmap;

MemDC.CreateCompatibleDC(NULL);
MemBitmap.CreateCompatibleBitmap(pDC, nWidth, nHeight);

CBitmap *pOldBit=MemDC.SelectObject(&bitmap);

//绘图
MemDC.MoveTo(。。。);

pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);

bitmap.DeleteObject();
MemDC.DeleteDC();

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧