用StretchBlt贴图失真有关问题
用StretchBlt贴图失真问题
我是在OCX的OnDraw里面想给Static控件上面贴个图片,应经用SetStretchBltMode函数了,用上面的方法就没有问题,但是一想在控件上面贴图,用了SetStretchBltMode函数也一直失真,请问是我代码哪里写的不正确么,急,在线等!!
下面这样贴就没有问题
我现在想在控件上面贴图下面这种情况这种情况就失真
------解决方案--------------------
连续调用两次:
p1=m_StcVideo.GetDC();//返回一个临时CDC对象指针
p2=m_StcVideo.GetDC();//是另一个临时CDC对象指针
p1和p2是不一样的
我是在OCX的OnDraw里面想给Static控件上面贴个图片,应经用SetStretchBltMode函数了,用上面的方法就没有问题,但是一想在控件上面贴图,用了SetStretchBltMode函数也一直失真,请问是我代码哪里写的不正确么,急,在线等!!
下面这样贴就没有问题
CDC dc;
dc.CreateCompatibleDC(pdc);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
dc.SelectObject(&bitmap);
pdc->SetStretchBltMode(STRETCH_HALFTONE);
pdc->StretchBlt(0,0,width,height,&dc,0,0,800,572,SRCCOPY);
我现在想在控件上面贴图下面这种情况这种情况就失真
Static m_StcVideo;
HDC hdcimage = CreateCompatibleDC(NULL);
HBITMAP hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
m_StcVideo.ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
SelectObject(hdcimage, hBitmap);
SetStretchBltMode(m_StcVideo.GetDC()->GetSafeHdc(), STRETCH_HALFTONE);
StretchBlt(m_StcVideo.GetDC()->GetSafeHdc(), 0, 0, width, height, hdcimage, 0, 0, 800, 572, SRCCOPY);
------解决方案--------------------
连续调用两次:
p1=m_StcVideo.GetDC();//返回一个临时CDC对象指针
p2=m_StcVideo.GetDC();//是另一个临时CDC对象指针
p1和p2是不一样的