MFC获得控件大小及在picturecontrol控件上画图

http://apps.hi.baidu.com/share/detail/19429581


MFC获得控件大小及在picturecontrol控件上画图

有时不管是要界面的摆设还是画图获得图像上像素点坐标,都需要控件的大小,代码如下

   CRect rc;
    CWnd *pWnd = GetDlgItem(IDC_STATIC_DIB);//参数为控件ID
    pWnd->GetClientRect(&rc);//rc为控件的大小。

进一步,需要在pictrecontrol控件上画图

CDC *pDC = GetDlgItem(IDC_STATIC_DIB);

img.Show(pDc,&rc);

以上代码规整点整理如下:

CDC *pDC = GetDlgItem(IDC_STATIC_DIB)->GetDC();

CRect rc;

GetDlgItem(IDC_STATIC_DIB)->GetClient(rc);

img.Show(pDC,&rc);

//show()函数是提前写好的缩放图像的函数,没事贴出来,仿pj写的。。。

///

int ImgSuccinctDib::Show(CDC *pDC, CRect *pRect)
{
if (m_pPtr == NULL)
{
   return 0;
}
BITMAPINFO* bi =(BITMAPINFO *) new BYTE[sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)];
memcpy(&bi->bmiHeader,m_pBmih,sizeof(BITMAPINFOHEADER));

if (GetBitCount() == 8)
{
   RGBQUAD pal[256];
   for (int i = 0;i<256;i++)
   {
    pal[i].rgbBlue = i;
    pal[i].rgbGreen = i;
    pal[i].rgbRed = i;
    pal[i].rgbReserved = 0;

   }
   memcpy(&bi->bmiColors,pal,256*sizeof(RGBQUAD));
}
::StretchDIBits(pDC->GetSafeHdc(),0,0,pRect->right,pRect->bottom,\
               0,0,m_pBmih->biWidth,m_pBmih->biHeight,m_pPtr,(BITMAPINFO*)bi,
      DIB_RGB_COLORS,SRCCOPY);
delete []bi;
bi=NULL;
return 1;

}


关键是取picture控件的指针,GetDlgItem(IDC_PICTURE1),而后是取cdc,GetDC().

这个cdc类的指针就可以textout,moveto,lineto画线了,但是如何才能实现屏幕横滚呢,清屏功能是现成的吗?还要再看一下

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值