page contents

C语言——图形库其他功能函数

C语言——图形库其他功能函数

一、BeginBatchDraw

这个函数用于开始批量绘图。执行后,任何绘图操作都将暂时不输出到屏幕上,直到执行 FlushBatchDraw 或 EndBatchDraw 才将之前的绘图输出。

void BeginBatchDraw();

参数:

(无)

返回值:

(无)

示例:

以下代码实现一个圆从左向右移动,会有比较明显的闪烁。
请取消 main 函数中的三个注释,以实现批绘图功能,可以消除闪烁。

#include <graphics.h>

int main()
{
    initgraph(640,480);

    setlinecolor(WHITE);
    setfillcolor(RED);

    // BeginBatchDraw();
    for(int i=50; i<600; i++)
    {
        circle(i, 100, 40);
        floodfill(i, 100, WHITE);
        // FlushBatchDraw();
        Sleep(10);
        cleardevice();
    }

    // EndBatchDraw();

    closegraph();
}

二、EndBatchDraw

这个函数用于结束批量绘制,并执行未完成的绘制任务。

// 结束批量绘制,并执行未完成的绘制任务
void EndBatchDraw();
// 结束批量绘制,并执行指定区域内未完成的绘制任务
void EndBatchDraw(
    int left,
    int top,
    int right,
    int bottom
);

参数:

left

指定区域的左部 x 坐标。

top

指定区域的上部 y 坐标。

right

指定区域的右部 x 坐标。

bottom

指定区域的下部 y 坐标。

返回值:

(无)

示例:

请参见 BeginBatchDraw 的示例。

三、FlushBatchDraw

这个函数用于执行未完成的绘制任务。

// 执行未完成的绘制任务
void FlushBatchDraw();
// 执行指定区域内未完成的绘制任务
void FlushBatchDraw(
    int left,
    int top,
    int right,
    int bottom
); 

参数:

left

指定区域的左部 x 坐标。

top

指定区域的上部 y 坐标。

right

指定区域的右部 x 坐标。

bottom

指定区域的下部 y 坐标。

返回值:

(无)

示例:

请参见 BeginBatchDraw 的示例。


四、GetEasyXVer

这个函数用于获取当前 EasyX 库的版本信息。

TCHAR* GetEasyXVer();

参数:

(无)

返回值:

返回当前 EasyX 库的版本信息。

示例:

以下代码实现输出当前 EasyX 版本号:

#include <stdio.h>
#include <graphics.h>

int main()
{
	TCHAR* s = GetEasyXVer();
	_tprintf("EasyX 当前版本:%s\n", s);
}

五、InputBox

这个函数用于以对话框形式获取用户输入。

bool InputBox(
	LPTSTR	pString,
	int	nMaxCount,
	LPCTSTR	pPrompt = NULL,
	LPCTSTR	pTitle = NULL,
	LPCTSTR	pDefault = NULL,
	int	width = 0,
	int	height = 0,
	bool	bHideCancelBtn = true
);

参数:

pString

指定接收用户输入字符串的指针。

nMaxCount

指定 pString 指向的缓冲区的大小,该值会限制用户输入内容的长度。缓冲区的大小包括表示字符串结尾的 '\0' 字符。当允许多行输入时,用户键入的回车占两个字符位置。

pPrompt

指定显示在窗体中的提示信息。提示信息中可以用“\n”分行。InputBox 的高度会随着提示信息内容的多少自动扩充。如果该值为 NULL,则不显示提示信息。

pTitle

指定 InputBox 的标题栏。如果为 NULL,将显示应用程序的名称。

pDefault

指定显示在用户输入区的默认值。

width

指定 InputBox 的宽度(不包括边框),最小为 200 像素。如果为 0,则使用默认宽度。

height

指定 InputBox 的高度(不包括边框)。如果为 0,表示自动计算高度,用户输入框只允许输入一行内容,按“回车”确认输入信息;如果大于 0,用户输入框的高度会自动拓展,同时允许输入多行内容,按“Ctrl+回车”确认输入信息。

bHideCancelBtn

指定是否允许用户取消输入。如果为 true(默认),InputBox 只有一个“确定”按钮,没有“X”关闭按钮,按 ESC 无效;如果为 false,InputBox 有“确定”和“取消”按钮,允许点“X”和按 ESC 关闭窗口。

返回值:

返回用户是否输入信息。如果用户按“确定”,返回 true;如果用户按“取消”,返回 false。

示例:

以下示例提示用户输入圆的半径,并画圆:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>

int main()
{
	// 初始化图形窗口
	initgraph(640, 480);

	// 定义字符串缓冲区,并接收用户输入
	char s[10];
	InputBox(s, 10, "请输入半径");

	// 将用户输入转换为数字
	int r;
	sscanf(s, "%d", &r);

	// 画圆
	circle(320, 240, r);

	// 按任意键退出
	_getch();
	closegraph();
}




六、GetHWnd

这个函数用于获取绘图窗口句柄。

HWND GetHWnd();

参数:

(无)

返回值:

返回绘图窗口句柄。

说明:

在 Windows 下,句柄是一个窗口的标识,得到句柄后,可以使用 Windows SDK 中的各种命令实现对窗口的控制。

注意,请不要通过该窗口句柄获取窗口的 DC 然后利用 GDI 函数实现对窗口的绘图操作。由于实现机制的问题,获取窗口的 DC 请使用 GetImageHDC 函数。

示例:

// 获得窗口句柄
HWND hWnd = GetHWnd();
// 使用 API 函数修改窗口名称
SetWindowText(hWnd, "Hello!");


  • 发表于 2021-10-06 17:02
  • 阅读 ( 1131 )
  • 分类:C/C++开发

0 条评论

请先 登录 后评论
小威
小威

64 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1471 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章