怎样使图象居中显示

wdf1 2000-08-15 01:32:00
1. 图象在MDIMainFrame客户区显示出来了, 怎样用 pDC->BitBlt(...);使图象在窗口居
中显示。给定条件 RECT r; CBitmap bmp; CDC *pDC; 都已初始化,不必再细说。
2.pDC->StrechBlt(...)的用法。

以上两问题,我已能显示,但有对话框在上面移动时,画面就变乱,可能是坐标不对,
请大侠赐教。 (我现在只乘30分了,对不起).
...全文
128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdf1 2000-08-16
  • 打赏
  • 举报
回复

已解决,是GetClientRect(&r)出了问体.
wdf1 2000-08-15
  • 打赏
  • 举报
回复

hyzx2000: 我按照您的写法做了还是不行, 对话框移动时是不能调用Invalidate()的, 闪烁太
厉害, 而且也不该这么做.

hyzx2000 2000-08-15
  • 打赏
  • 举报
回复
有对话框在上面移动时,画面就变乱。在显示完对话框之后,你可以调用Invalidate(true)使其重画。
hyzx2000 2000-08-15
  • 打赏
  • 举报
回复
1.图象居中显示
BITMAP bm;
bmp.GetBitmap(&bm);
int w,h;
w = bm.bmWidth;h = bm.bmHeight;
int x,y;
x = r.left + ( r.Width() - w ) / 2;
y = r.top + ( r.Height() - h ) /2;
CDC memdc;
memdc.CreateCompatibleDC( pDC );
CBitmap* poldbmp=memdc.SelectObject( &bmp);
pDC->BitBlt( x,y,w,h,&memdc,0,0,SRCCOPY);
memdc.SelectObject(poldbmp);
2.StretchBlt用法
pDC->StretchBlt( 目标图象x,y,w,h,&memdc,源图象x,y,w,h,SRCCOPY);
其中对SRCCOPY之类的常数,参见MSDN

16,471

社区成员

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

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

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