使用GDI位图
来源:互联网 发布:手机软件源码 编辑:程序博客网 时间:2024/06/07 19:45
GDI位图只是另一个GDI对象,例如笔或者字体。你必须先创建一个位图,然后将它选入设备环境。当你完成改对象的操作之后,必须解除对它的选中,并删除它。
尽管如此,仍有一些问题,原因是显示器的“位图”实际上就是显示器表面映像,打印机设备的“位图”是打印页面本身。因此不能将位图选入显示设备环境或者打印机设备环境。必须使用CDC::CreateCompatibleDC 函数为位图创建一个特殊的内存设备环境。然后使用CDC::StretchBlt或者CDC::BitBlt来从内存设备环境中向"真正"的设备环境中复制这些位。
范例:
void CBlat2View::OnDraw(CDC* pDC){ CBlat2Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // load IDB_BITMAP1 from our resources CBitmap bmp; if (bmp.LoadBitmap(IDB_BITMAP1)) { // Get the size of the bitmap BITMAP bmpInfo; bmp.GetBitmap(&bmpInfo); // Create an in-memory DC compatible with the // display DC we're using to paint CDC dcMemory; dcMemory.CreateCompatibleDC(pDC); // Select the bitmap into the in-memory DC CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp); // Find a centerpoint for the bitmap in the client area CRect rect; GetClientRect(&rect); int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2; int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2; // Copy the bits from the in-memory DC into the on- // screen DC to actually do the painting. Use the centerpoint // we computed for the target offset. pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 0, 0, SRCCOPY); dcMemory.SelectObject(pOldBitmap); } else TRACE0("ERROR: Where's IDB_BITMAP1?\n");}
显示映射模式:MM_TEXT 每个位图像素将映射为一个显示像素。
MM_LOENGLISH :位图大小将是 0.54*0.96 英寸。
注 GDI对象包括:Cbitmap, CBrush,CFont, CPalette,CPen,CRgn。
- 使用GDI位图
- vc gdi 位图的使用
- 关于使用GDI+使用位图的说明
- 使用GDI+读取常用位图格式
- 使用GDI+ 保存HDC为位图文件
- 使用gdi+绘制缩放位图的问题
- GDI使用TransparentBlt画透明位图
- 使用GDI+实现24 位图转32位位图
- GDI位图和DIB位图
- VC中使用GDI函数实现位图的透明
- VC中使用GDI函数实现位图的透明
- VC中使用GDI函数实现位图的透明
- GDI绘制透明位图
- GDI位图透明显示
- GDI之绘制位图
- GDI位图实现
- GDI编程之五、位图
- 双缓冲\GDI保存位图
- ABAP开发类命名规则
- 传话游戏
- 5年记(2)
- 人生在世需懂得人情世故
- C#中的两个关键字ref和out
- 使用GDI位图
- 开题第一帖
- org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter与org.apache.struts.dispatcher.F
- 作为一个男人,尤其作为一个真正的爷们,应该做好下列小事
- FIR & IIR
- 设置虚拟IP
- 卷积
- hdu2049
- sql语句的错误