请教:如何在放大位图时显示网格

maomaoonfire 2008-04-18 03:07:56
得到位图宽和高:
HBITMAP hBitmap;
hBitmap = (HBITMAP)LoadImage(
AfxGetInstanceHandle(),
strpath,IMAGE_BITMAP,
0,
0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION
);
CBitmap m_Bitmap;
m_Bitmap.Attach(hBitmap);
//得到位图信息
BITMAP bmp;
m_Bitmap.GetBitmap(&bmp);
//得到图片的宽和高
nX = bmp.bmWidth;
nY = bmp.bmHeight;
放大位图(mode1,mode2为放大倍数):
HBITMAP hBitmap = (HBITMAP) LoadImage(NULL, name, IMAGE_BITMAP, nX*mode1, nY*mode2, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
m_bmpCtrl.SetBitmap(hBitmap);
显示位图时是有滚动条的.
请问如何在放大位图后背景里加上网格,就是说放大后每个象素占一个网格?
...全文
105 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2008-04-18
  • 打赏
  • 举报
回复
线条很细,因为用的线形和颜色的因为。

想像VC那样成比例的放大,可以自己填充dc的数据。
maomaoonfire 2008-04-18
  • 打赏
  • 举报
回复
您说的这种用StretchBlt或BitBlt的方法放大后就没有滚动条了.
网格我想这样画,但这样画线跟每个象素一样粗.
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&bmp);
int i;
for (i=0;i<=50;i++)
{
memDC.MoveTo(0,2*i+1);
memDC.LineTo(30,2*i+1);
}
我想让图片象素放大后网格还是很细,能把各象素隔开,而不是遮住象素.请问应该怎么做呢
Yofoo 2008-04-18
  • 打赏
  • 举报
回复
我希望的放大是每个象素变大,而不是象素数变多
LoadImage 时用实际大小nX, nY为0

在实际需要显示的时候才 放大,缩小 ( 如BitBlt)


在放大位图后背景里加上网格, 这需要自己绘制,
maomaoonfire 2008-04-18
  • 打赏
  • 举报
回复
还有一个问题,
HBITMAP hBitmap = (HBITMAP) LoadImage(NULL, name, IMAGE_BITMAP, nX*mode1, nY*mode2, LR_LOADFROMFILE ¦ LR_CREATEDIBSECTION ¦ LR_DEFAULTSIZE);
这样放大后,图片会有点失真.我希望的放大是每个象素变大,而不是象素数变多,请问应该怎么做呢

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧