首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 用GDI+怎么显示JPEG啊? [已结贴,结贴人:Chengs_bbs]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Chengs_bbs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-22 11:15:06 楼主
    void CPage::DrawImage(TCHAR *lpFileName)
    {
    //绘制图片
    Image mImage((WCHAR *)lpFileName);
    Graphics mGraphics(hMemoryDC);
    mGraphics.DrawImage(&mImage, 0, 0);
    }
    我这样调用怎么一点反应都没有啊?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • appearance
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 12:57:131楼 得分:10
    RECT r;
    pWnd->GetClientRect(&r);
    Gdiplus::Graphics g(pWnd->GetDC()->m_hDC);
    g.DrawImage(pBitmap, Gdiplus::Rect(0, 0, r.right, r.bottom));


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • douzexin1111
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 13:51:402楼 得分:0
    GDI+需要实现StartUp的。
    GdiplusStartup()函数
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Chengs_bbs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 13:54:133楼 得分:0
    引用 2 楼 douzexin1111 的回复:
    GDI+需要实现StartUp的。
    GdiplusStartup()函数



    这个当然是GdiplusStartup()过了的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Chengs_bbs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 13:54:384楼 得分:0
    引用 1 楼 appearance 的回复:
    RECT r;
    pWnd->GetClientRect(&r);
    Gdiplus::Graphics g(pWnd->GetDC()->m_hDC);
    g.DrawImage(pBitmap, Gdiplus::Rect(0, 0, r.right, r.bottom));



    那还不是跟我上面的一样。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • douzexin1111
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 14:06:265楼 得分:0
    mGraphics.DrawImage(&mImage, 0, 0,长度,宽度);你少了两个参数
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hurryboylqs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 14:07:016楼 得分:10
    一样么?你要把代码贴完,

    //绘制图片
    Image mImage((WCHAR *)lpFileName);
    Graphics mGraphics(hMemoryDC);
    mGraphics.DrawImage(&mImage, 0, 0);

    --------------
    我看你这里是绘制到内存DC中的,内存DC跟屏幕DC是不一样的

    还有,你是不能先用DrawImage到内存DC 然后用GDI绘制屏幕DC上的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mackz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      6

      7

    发表于:2008-08-22 15:45:137楼 得分:0
    两个问题:第一是貌似你绘制在内存DChMemoryDC上,是否后面还绘制到屏幕DC上了?第二是把TCHAR*强制转换为WCHAR*,如果是UNICODE编码,没有问题,但是不需要(TCHAR就是WCHAR);如果是非UNICODE,TCHAR是char,强制转换结果是错的。可以用T2W宏来转换。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jszj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 16:00:168楼 得分:0
    我不知道,我只会:

    HBITMAP hBmp = LoadImage(xxx);
    dc.SelectObject( &hBmp );
    dc.BltBit(xxx);

    这样就行了吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yyunffu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 16:17:339楼 得分:0
    绘制到内存兼容DC上的图像是不能直接显示在屏幕上的,需要“拷贝”到显示设备DC上。用 BitBlt系列函数显示。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • smartdrvsky
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 16:41:2410楼 得分:0
    gdi+只需要用Graphics对象调用Draw方法即可
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved