我的对话框有背景位图,本来原来是用StretchBlt函数画上去的,其大小总能够适合对话框的大小,不管在什么OS环境以及分辨率下,但是图象有失真,即很模糊,位图上的字也不清楚。(原位图比实际的对话框要大,没有改过)。
为了清晰,我只好一图片的形式放上去,把位图的大小调到和对话框的大小几乎相同,效果很好,在英文OS,中文OS以及不同的分辨率下测试都没有问题,但是发给台北的头头的时候,问题就出来了,位图比对话框小!(用StretchBlt就不会出现这个问题,用BitBlt肯定不行),真是难过!他说可能是字体的原因,LARGE FONT,这个问题该怎么解决?

解决方案 »

  1.   

    你给图片框一个Control变量,然后在OnInitDialog里调用:
    CRect RC;
    GetClientRect(RC);
    m_cbmp.MoveWindow(RC);
    试试。
      

  2.   

    做一个占位符比如一个Frame:IDC_FRAME
    CRect rtFrame;
    GetDlgItem(IDC_FRAME)->GetWindowRect(rtFrame);
    StretchBlt(rtFrame.Width(),rtFrame.Height(),.......);
      

  3.   

    因为对话框的尺寸大小是用字体来度量的。x坐标和宽度,以字符平均宽度的1/4来表示;y坐标和高度是以字符高度的1/8来表示。
    而位图是用实际的象素来度量
    你可以用MapDialogRect()和GetDialogBaseUnits()来转换两种度量。然后把对话框设成和Bmp一样大
      

  4.   

    用StretchBlt的时候,就要用SetStretchBltMode