用GetPixel和SetPixel逐点Copy就行
解决方案 »
- CFormView类的DoDataExchange 怎么进不去呢?
- 关于CSliderctrl
- 怎样使得点住菜单栏后可以拖动窗口
- ado方式连接oracle时报错"未指定的错误"
- 关于_uuidof函数!
- 怎样才能将菜单中的一项在程序中设定它的可用性
- 如何用自定义的菜单来实现多文档中的File\Open?请教高手
- 谁知道TCP/IP包的结构,或解析它的算法?
- 最小化到托盘后……
- 请教,如何在MainFram的菜单响应中,调用派生CVIEW的函数??
- 在CEditView中,怎样利用standard Find dialog box实现类似于记事本的查找功能?
- 请问flash这个工具是用什麽东西开发的?
CMemDC memdc;
...........
//这里把黑白图先用BitBlt Copy到 dc中
//再把彩图选入memdc
...........
CRect rc(xx,xx,xx,xx);//图像的区域for(int j=rc.bottom;j>=rc.top;j--)
for(int i=rc.left;i<=rc.right;i++)
{
COLORREF cr=memdc.GetPixel(i,j);
dc.SetPixel(i,j,cr);
}
copy到dc中.
还有这种效果是否类似乳化的效果,那样不太好吧?
www.vckbase.com
//(left,top)-(right,bottom)要作图的区域
void Draw(HDC hDC,HBITMAP hBA,HBITMAP hBB,int left,int top,int right,int bottom)
{
HDC hdcA = CreateCompatibleDC(hDC);
HDC hdcB = CreateCompatibleDC(hDC);
SelectObject(hdcA,hBA);
SelectObject(hdcB,hBB);
for(int y=top;y<bottom;y++)
{
BitBlt(hDC,left,top,right,y,hdcA,0,0,SRCCOPY);
BitBlt(hDC,left,y,right,bottom,hdcB,0,0,SRCCOPY);
}
DeleteDC(hdcA);
DeleteDC(hdcB);
}
肯定比GetPixelV,SetPixelV快非常多。
hmemdc=CreateCompatibleDC(hdc); //建立MemDChbmpbw=LoadImage(...............);//载入黑白位图
hbmpcr=LoadImage(...............);//载入彩色位图SelectObject(hmemdc,hbmpbw);//黑白位图选入MemDC
BitBlt(hDC,0,0,100,100,hmemdc,0,0,SRCCOPY);//SelectObject(hmemdc,hbmpcr);//彩色位图选入MemDCfor(int j=100;j>=0;j--)
for(int i=0;i<=100;i++)
{
COLORREF cr=GetPixel(hmemdc,i,j);
SetPixel(hdc,i,j,cr);
}