一个简单问题,有一个bmp图片太大,我如何按比例缩小后显示!

gaoxiaopai 2006-11-14 09:18:54
CString head_name1="C:\\history\\20061114084845_head.bmp";
HBITMAP hBitmap =(HBITMAP)LoadImage(NULL, head_name1, IMAGE_BITMAP,
0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
m_picture.ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
m_picture.SetBitmap(hBitmap);
其中m_picture是STATIC控件。目前我显示不完整张图片(图片太大),而STATIC控件不能设置得太大,我该如何处理呢?
...全文
629 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallfishff 2006-11-14
  • 打赏
  • 举报
回复
楼上写得正确 理论得分.
xyz666 2006-11-14
  • 打赏
  • 举报
回复
缩小为原来的1/2
xyz666 2006-11-14
  • 打赏
  • 举报
回复
HBITMAP hbitmap = (HBITMAP) LoadImage(NULL,
filename,
IMAGE_BITMAP,
0,0,
LR_LOADFROMFILE);
bitmap.Attach(hbitmap);
bitmap.GetObject(sizeof(bmInfo),&bmInfo);
dcMemory.SelectObject(&bitmap);
bitmap.Detach();
sz.cx = bmInfo.bmWidth;
sz.cy = bmInfo.bmHeight;
pDC->StretchBlt(200,100,sz.cx/2,sz.cy/2,&dcMemory,0,0,sz.cx,sz.cy,SRCCOPY);
yangpan116 2006-11-14
  • 打赏
  • 举报
回复
GetClientRect得到static控件的大小。
然后再StretchBlt,缩放就可以了。
zhucde 2006-11-14
  • 打赏
  • 举报
回复
例子:

http://www.vckbase.com/document/viewdoc/?id=527
yzcurry 2006-11-14
  • 打赏
  • 举报
回复
你可以在上面就可以解决了,在HBITMAP里面有一个Pens参数,然后它有两种方式的,你选其中的geometric pen 来用就可以了
具体我把我msdn上面的原文给你看一下
About Pens
There are two types of pen: cosmetic and geometric. A cosmetic pen is used with applications requiring lines of fixed width and lines that are quickly drawn. A CAD application, for example, uses a cosmetic pen to generate hidden, section, center, and dimension lines that are between .015 and .022 inches wide — regardless of the scale factor. A geometric pen is used with applications requiring scalable lines, lines with unique end or join styles, and lines that are wider than a single pixel. A spreadsheet application, for example, uses a geometric pen to define each of the bars in a bar graph as a wide line.
具体怎么操作我就不详细讲解了,自己去看一下吧,.本人上班之中.
laolaoliu2002 2006-11-14
  • 打赏
  • 举报
回复
The following example code is taken from an application that displays an image either at its original size or at twice its original size. (This application uses the default stretch mode.)

hdcScaled = CreateCompatibleDC(hdcScreen);

hbmScaled = CreateCompatibleBitmap(hdcScreen,
GetDeviceCaps(hdcScreen, HORZRES) * 2,
GetDeviceCaps(hdcScreen, VERTRES) * 2);

if (hbmScaled == 0)
errhandler("hbmScaled", hwnd);

// Select the bitmaps into the compatible DC.

if (!SelectObject(hdcScaled, hbmScaled))
errhandler("Scaled Bitmap Selection", hwnd);

case WM_COMMAND: // message: command from application menu
switch(wParam)
{
case IDM_SCALEX1:
if (fBlt)
{
fScaled = FALSE;
hdcWin = GetDC(hwnd);
BitBlt(hdcWin,
0,0,
bmp.bmWidth, bmp.bmHeight,
hdcCompatible,
0,0,
SRCCOPY);
ReleaseDC(hwnd, hdcWin);
}
break;

case IDM_SCALEX2:
if (fBlt)
{
fScaled = TRUE;
StretchBlt(hdcScaled,
0, 0,
bmp.bmWidth * 2, bmp.bmHeight * 2,
hdcCompatible,
0, 0,
bmp.bmWidth, bmp.bmHeight,
SRCCOPY);

hdcWin = GetDC(hwnd);
BitBlt(hdcWin,
0,0,
bmp.bmWidth, bmp.bmHeight,
hdcScaled,
0,0,
SRCCOPY);
ReleaseDC(hwnd, hdcWin);
}
break;
碧螺春的马甲 2006-11-14
  • 打赏
  • 举报
回复
1 自己用算法缩小。抽点、平均等
2 用Bitblt DrawDibDraw画到你的倥件上,这些函数有拉伸的参数。
3 嘿嘿,不要找大的图片了。
laolaoliu2002 2006-11-14
  • 打赏
  • 举报
回复
SetStretchBltMode
StretchBlt
tuke0001 2006-11-14
  • 打赏
  • 举报
回复
StretchBlt可以,但可能图象会失真
zhshgap 2006-11-14
  • 打赏
  • 举报
回复
直接用画图工具把图缩小..
taianmonkey 2006-11-14
  • 打赏
  • 举报
回复
使用StretchBlt
LiChenYue 2006-11-14
  • 打赏
  • 举报
回复
另存为JPG格式,可以自动大小吧?
【基本介绍】 Image batch dispose批量图片处理工具,支持对批量图片的加文字,批量改变图片大小,批量更名,可以批量旋转图片,可以批量压缩图片文件大小,可以批量锐化图片,批量转换图片格式(bmp,jpg,gif,png,.tiff等)为Jpg格式.特别适用于含有上千种商品图片信息的电子商务网站管理人员和家庭中对数码照片的处理等. 【软件功能】 批量添加水印:电子商务网站上的商品信息图片特别容易被其它网站直接拿去使用,为了保护自己的图片不被盗用,或者要对图片进行标识,则我们有必要在图片上添加些文字信息或图片信息. 批量修改图片尺寸:当前数码相机像素越来越高,缺省情况下拍出来的照片非常大,不适合在电脑上直接浏览,有必要批量处理成比较小的照片.本软件支持三种缩放方式,按比例缩放,按绝对大小缩放,按最大高或宽缩放,满足客户不同的处理要求. 批量修改图片文件名:我们拍出来的数码照片,每次需要一张张改名,特别麻烦,本软件支持批量更名. 批量格式转换:不同的图片格式有不同的优缺点,适用于不同的应用场合,本软件可以将bmp,jpg,gif,png,.tiff等格式的图片转换为Jpg. 可以批量旋转图片:有时我们需要将图片旋转. 可以批量压缩图片文件大小:图片文件太大不利于存储和传输,在不修改图片尺寸的情况下,我们可以调整图片的质量来达到压缩图片文件大小,以便于存储和传输. 可以批量锐化图片:拍出来的照片有点模糊,或者本来清晰的图片在经过放大或缩小尺寸后图片内容经常会变得有一点模糊,我们可以利用锐化图片的功能让图片内容更加清楚.

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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