对话框中用GDI显示了一个图像,怎么清除图像??

yrisxfyh 2010-02-21 12:08:05
我想通过单击按忸来显示一个图像,那怎么清除掉??
我用graphics.Clear(GetDC()->GetBkColor());来清除,结果界面全黑了。
...全文
202 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjdev 2010-02-21
  • 打赏
  • 举报
回复
为什么要把这些代码放到一起呢?
yrisxfyh 2010-02-21
  • 打赏
  • 举报
回复
引用 8 楼 sjdev 的回复:
引用 4 楼 yrisxfyh 的回复:Graphics g(GetDC()); g.DrawImage

这段代码放在要显示图片的地方.
清除图片的地方Invalidate.


Invalidate();
Graphics graphics(GetDC()->m_hDC);
Image image(m_CurrtIMG, false);
graphics.DrawImage(&image, 270, 45, image.GetWidth(), image.GetHeight());

我把这段代码放在按钮事件函数里,但是现在什么都不显示了。
sjdev 2010-02-21
  • 打赏
  • 举报
回复
引用 4 楼 yrisxfyh 的回复:
Graphics g(GetDC());
g.DrawImage


这段代码放在要显示图片的地方.
清除图片的地方Invalidate.
yrisxfyh 2010-02-21
  • 打赏
  • 举报
回复
引用 6 楼 vann1982 的回复:
OnPaint()不需手动调用的 Invalidate 即可


不明白,到底要怎么清除上一次显示的图像?
vann1982 2010-02-21
  • 打赏
  • 举报
回复
OnPaint()不需手动调用的 Invalidate 即可
xsc2001 2010-02-21
  • 打赏
  • 举报
回复
因为你清除时用了黑色背景,换个其他颜色就行了,比如按钮的灰色。
yrisxfyh 2010-02-21
  • 打赏
  • 举报
回复
引用 3 楼 sjdev 的回复:
譬如按钮的相应函数是OnButtonClicked


Graphics g(GetDC());
g.DrawImage


可还是没有清除上一次的图像。
sjdev 2010-02-21
  • 打赏
  • 举报
回复
譬如按钮的相应函数是OnButtonClicked


Graphics g(GetDC());
g.DrawImage
yrisxfyh 2010-02-21
  • 打赏
  • 举报
回复
引用 1 楼 sjdev 的回复:
如果你的显示图像不是在OnPaint之类函数中设置的,只需Invalidate就Ok了。


我只知道在OnPaint()函数中显示图像,其他方法不会显示。

我是当按钮被按下时,我自己调用这个OnPaint()函数。结果我无法清除上一个图像。
sjdev 2010-02-21
  • 打赏
  • 举报
回复
如果你的显示图像不是在OnPaint之类函数中设置的,只需Invalidate就Ok了。
huziwu 2010-02-21
  • 打赏
  • 举报
回复
加个变量就行了
static bool IsClearImage = false;
if(IsClearImage)
{
Invalidate();
}
else
{
Graphics graphics(GetDC()->m_hDC);
Image image(m_CurrtIMG, false);
graphics.DrawImage(&image, 270, 45, image.GetWidth(), image.GetHeight());
}
IsClearImage = !IsClearImage;

顺便问下,LZ是玩大话2的?看头像是里面的鬼族,呵呵!哪个服的?
yrisxfyh 2010-02-21
  • 打赏
  • 举报
回复
引用 10 楼 sjdev 的回复:
为什么要把这些代码放到一起呢?


我不知道放在哪,
Invalidate();
Graphics graphics(GetDC()->m_hDC);
Image image(m_CurrtIMG, false);
graphics.DrawImage(&image, 270, 45, image.GetWidth(), image.GetHeight());

就这些代码。应该怎么放?
yhp1888 2010-02-21
  • 打赏
  • 举报
回复
你是如何“显示一个图像”的?
那么你要清除的时候,就改为显示一个“.”,达到显示“.”的目的了,再改为显示“”(空),就是清除。
yhp1888 2010-02-21
  • 打赏
  • 举报
回复
引用楼主 yrisxfyh 的回复:
我想通过单击按忸来显示一个图像,那怎么清除掉??
我用graphics.Clear(GetDC()->GetBkColor());来清除,结果界面全黑了。


你是如何“显示一个图像”的?
那么你要清除的时候,就改为显示一个“.”,达到显示“.”的目的了,再改为清除。

16,472

社区成员

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

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

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