关于CxImage图像操作类库中Crop函数不能连续截取的问题

猫牌铅笔 2017-05-16 04:14:02
我想实现一张png图片(4个动作)连续按帧播放的动画,每次截取整张图片的一部分显示出来。我使用cximg->Crop(rect)函数改变rect的left和right来截取。可是不能连续播放。请问是什么问题啊?

BOOL Role::Draw(HDC m_hdc)
{
static TCHAR temp[100];

static UINT frameCount = 0;
if (frameCount == 4)
frameCount = 0;

CRect rect;
rect.bottom = 103*3;
rect.left = 133*frameCount;
rect.right = 133*(frameCount+1);
rect.top = 103*(2);

cximg->Crop(rect);
cximg->Draw(m_hdc,0,400);

frameCount++;

swprintf_s(temp,L"framecount: %d ,left: %d ,right: %d ", frameCount, rect.left, rect.right);
TextOut(m_hdc, 0, 100, temp, wcslen(temp));

//BitBlt(m_hdc, 0, 400, 133, 103, m_hImgDC, 133*frameCount, 103*3, SRCCOPY);

return TRUE;
}
...全文
240 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-05-17
  • 打赏
  • 举报
回复
那就每次Crop之前,先备份一份。
猫牌铅笔 2017-05-17
  • 打赏
  • 举报
回复
引用 4 楼 赵4老师的回复:
那就每次Crop之前,先备份一份。
已解决。谢谢。。。。
猫牌铅笔 2017-05-16
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
    static CRect rects[4]={
        CRect(  0,  0,133,103),
        CRect(133,  0,266,103),
        CRect(  0,103,133,206),
        CRect(133,103,266,206),
    }
    rect = rects[frameCount];

谢谢。还是不行。不过我发现问题所在了。好像是Crop之后cximg这张图片就只剩下crop的那部分了。
赵4老师 2017-05-16
  • 打赏
  • 举报
回复
不一定对,仅供参考。
赵4老师 2017-05-16
  • 打赏
  • 举报
回复
    static CRect rects[4]={
        CRect(  0,  0,133,103),
        CRect(133,  0,266,103),
        CRect(  0,103,133,206),
        CRect(133,103,266,206),
    }
    rect = rects[frameCount];

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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