jpg图像缩放显示

potlee 2008-10-27 03:41:05
小生接触VC时间不长,正在做一个员工资料管理程序。现在遇到jpg图片显示和缩放的问题。就是员工照片的显示啦。我用了kodak控件,可以显示出来,但不知道怎么把图片缩小显示在我已经做好的固定大小的控件上。
我是这样写的:
m_ctrlPicture.SetImage("c:\\a.jpg");
m_ctrlPicture.Display();//m_ctrlPicture是kodak控件的变量名。

请教各位应该怎么做,我不要改变原始图像的大小,只是得到图像尺寸后算好比例缩小到我固定的控件上就可以了。
如果用别的方法能实现也可以,请给出详细些的代码和过程,我对VC还不是太熟,谢谢!
...全文
471 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
大狗狗 2008-10-30
  • 打赏
  • 举报
回复
我有一个用API实现的PictureBox控件,简要介绍下:

class CPictureBox{

//注:窗口坐标、尺寸均采用像素单位
public:

/*WindowStyle==0 无边框(默认)
WindowStyle==WS_BORDER 窗口具有普通黑色边框
WindowStyle==WS_EX_CLIENTEDGE 窗口具有凹下去的效果
WindowStyle==WS_EX_WINDOWEDGE 窗口具有凸起的边框 */
CPictureBox( HWND hMainWindow,HINSTANCE hInstance,
DWORD xPos,DWORD yPos,DWORD width,DWORD height,
DWORD WindowStyle=0 );

~CPictureBox();

//在WM_SIZE处理函数中选择添加
BOOL SetPicBoxSize( DWORD xPos,DWORD yPos,DWORD cx,DWORD cy );

//ReDraw表示是否立即刷新窗口,默认否
BOOL SetPicBoxBkColor( COLORREF color,BOOL ReDraw=0 );

/*SHOW_PROPORTION 按窗口大小调整图片尺寸,保持图片比例(居中对齐)(默认)
SHOW_REALSIZE 按图片本身实际尺寸绘制(居中对齐)
SHOW_FULLBOX 按窗口大小调整图片尺寸,不保持图片比例
ReDraw表示是否立即刷新窗口,默认否 */
BOOL SetPicShowMode( DWORD ShowMode,BOOL ReDraw=0 );

//从文件载入图片
BOOL SetPicture( PTSTR PicFilePath );

//从内存缓冲载入图片
BOOL SetPicture( PBYTE SourceData,size_t DataSize );

。。。。。。
如感兴趣请加我QQ184263203
VsirSoft 2008-10-28
  • 打赏
  • 举报
回复
你可以用GDI+来操作 图形处理最好不要在使用GDI了
scklotz 2008-10-28
  • 打赏
  • 举报
回复
vc本身只支持bmp图像。

如果只是加载和显示jpg到程序中,可以通过IPicture这个COM接口来完成。

http://dev.csdn.net/article/82284.shtm
http://www.vckbase.com/document/viewdoc/?id=446
potlee 2008-10-28
  • 打赏
  • 举报
回复
感谢ddszhan 的回答,“可以通过IPicture这个COM接口来完成。 ”

http://dev.csdn.net/article/82284.shtm

我试了网页上的代码,有2个错。
HDC hDC_Temp=GetDC(hWnd); //报错:error C2660: 'GetDC' : function does not take 1 parameters

if (hFile!=INVALID_HANDLE_value) //报错:error C2065: 'INVALID_HANDLE_value' : undeclared identifier
(这里我把INVALID_HANDLE_value改成NULL通过了,可以这样改的吧?)

这两个错请帮忙解决一下,多谢了,还有我的程序是基于对话框的,不是SDK,没什么影响吗?
我是苦力 2008-10-28
  • 打赏
  • 举报
回复
最简单的就是使用gdi+。基本上所有的图片格式都能吃。
图片大小的缩放使用
Image::FromFile() //load pic
DrawImage() //dispaly pic
就可以了。

VC6使用GDI+ 的话要另外加库。不过都比较简单。
jinlingzwp 2008-10-28
  • 打赏
  • 举报
回复
INVALID_HANDLE_value
->INVALID_HANDLE_VALUE
CDC hDC=GetDC();
ddszhan 2008-10-27
  • 打赏
  • 举报
回复
用CxImage简单www.xdp.it

CxImage m_Image("1.jpg", CXIMAGE_FORMAT_JPG);
m_Image.Stretch(dc->GetSafeHdc(), rect, SRCCOPY);

16,472

社区成员

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

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

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