1

如果您使用下面的代码来绘制一个矩形,那么只要有任何东西在它上面移动,矩形就会消失。

#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    HDC screenDC = ::GetDC(0);
    ::Rectangle(screenDC, 200, 200, 300, 300);

    int exit; cin >> exit;
    return 0;
}

当我的 Rectangle 被破坏时,有什么方法可以接收回调以便我可以重新绘制它?有没有办法改变我的矩形的颜色?是否有涵盖此内容的良好综合教程?

4

3 回答 3

8

如果你想画一个矩形,最好在你自己的窗口中画。WM_PAINT每当您的窗口再次可见并需要重新绘制时,您都会收到事件。该操作系统并非意外地被称为“Windows”。大多数图形化的东西都以窗口为中心。

如果您不想显示除该矩形之外的任何内容,请将窗口设置为与矩形一样大。

于 2013-05-14T18:01:54.217 回答
1

这是因为屏幕在不断更新。东西正在你的矩形上重新绘制,这就是它消失的原因。(比如你的窗户)

编辑:您可以循环绘制矩形以将其保留在那里。如果需要,您还可以将此循环用于应用程序逻辑和事件处理。

注意:您应该做什么取决于应用程序的功能。将此方法作为最后的手段,因为它非常占用 CPU。(循环中的睡眠会减少 CPU 密集度,但你不能保证睡眠会给你一个正确的暂停时间。)

于 2013-05-14T17:56:01.787 回答
1

您需要在您的 winproc 中处理WM_PAINT,并且每次处理消息时,重新绘制您的图像。如果你不这样做,窗口只会用默认的背景颜色重新绘制自己。

有关 GDI 的更多详细信息,请参阅:thisthis

于 2013-05-14T17:56:41.733 回答