内存DC拷贝的问题

yjukh 2006-08-11 10:06:03
我在内存DC里绘图的时候用的是MM_ISOTROPIC模式,即可以自己定义比率、绘图原点,我把原点定在左下角,Y轴正方向向上。
可画完后拷贝到实际DC时,图像总是变成以左上角为原点了,并且Y正方向变成了向下的。
我想可能是外部还是以默认的MM_TEXT模式给绘制了。
能不能在StretchBlt拷贝的时候把纵向坐标变一下啊?
...全文
212 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cholau 2006-10-20
  • 打赏
  • 举报
回复
感谢楼主,给点分吧~
yjukh 2006-10-20
  • 打赏
  • 举报
回复
上面是我自己找到的方法~~
希望对后面的人有用
yjukh 2006-10-20
  • 打赏
  • 举报
回复
设置的时候变一下就行了啊:

pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowOrg((int)(-m_fXOrg*PRECISION),(int)(m_fYOrg*PRECISION));
pDC->SetWindowExt(PRECISION,-PRECISION);
pDC->SetViewportExt(1,1);
wangyekyo 2006-08-14
  • 打赏
  • 举报
回复
bimap就是直接用
CBitmap bitmap
bitmap.LoadBitmap(ID)
载入的啊,我都是这样创建的
也没有问题,我也是菜鸟,希望有高人指点
superarhow 2006-08-14
  • 打赏
  • 举报
回复
可以,StretchBlt可以把高度设为负数,就是垂直翻转
wangyekyo 2006-08-12
  • 打赏
  • 举报
回复
直接用内存dc就行了啊,为什么要用CreateCompatibleBitmap;
CLientDC dc(this);
CDC* memoryDC = new CDC;
memoryDC->CreateCompatibleDC(&dc);
memoryDC->SelectObject(&bitamp);
dc.StretchBlt(x, y, cx, cy, memoryDC,
bitmapX, bitmapY, bitmapCX, bitmapCY, SRCCOPY);
yjukh 2006-08-12
  • 打赏
  • 举报
回复
但是这样子由于我用的是MM_ISOTROPIC绘图模式,一个像素要用100甚至1000个单位来绘制,所设置的Bitmap就很大,例如:
bitmap.CreateCompatibleBitmap(&dc, rectClient.Width()*PRE, rectClient.Height()*PRE);
这个比率PRE我至少要100以上,这时我的程序甚至会弹出内存不足,或者是不能创建。
有没有办法解决啊
believefym 2006-08-12
  • 打赏
  • 举报
回复
使用内存DC不用创建兼容图像吗?
-------
要创建的,当作画布用的
yjukh 2006-08-12
  • 打赏
  • 举报
回复
使用内存DC不用创建兼容图像吗?
如果不用这句memoryDC->SelectObject(&bitamp);
中的bitamp是什么啊?
我看网上的例子都要创建的啊
believefym 2006-08-11
  • 打赏
  • 举报
回复
把设备dc跟内存dc做一样的设置不就可以了

16,550

社区成员

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

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

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