用c语言实现:编程实现鼠标绘图:鼠标左键按下画一个图案,鼠标右键按下画另外一个图案。要求:自主设计,图案绘制利用自定义函数实现,界面美观。上传多次按下鼠标绘制图案之后的运行结果图与程序代码。
时间: 2024-09-07 21:05:04 浏览: 71
由于我无法直接上传图片或运行结果图,我将提供一个用C语言编写的简单示例代码,该代码演示了如何使用鼠标事件来绘制不同的图案。这个例子使用了Windows平台下的Win32 API,因为C语言标准库本身并不支持鼠标绘图功能。在实现跨平台的鼠标绘图功能时,通常需要依赖于特定操作系统的API或者使用第三方图形库。
以下是一个简单的示例,展示了如何在Windows下使用Win32 API来实现鼠标左键绘制一个圆圈,右键绘制一个正方形:
```c
#include <windows.h>
const int g WindowWidth = 800;
const int g WindowHeight = 600;
const char g WindowClass[] = "MyWindowClass";
// 窗口过程函数声明
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
// 绘制圆圈的函数声明
void DrawCircle(HDC hdc, int x, int y, int radius);
// 绘制正方形的函数声明
void DrawSquare(HDC hdc, int x, int y, int side);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
WNDCLASS wc = {0};
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hInstance = hInstance;
wc.lpszClassName = g WindowClass;
wc.lpfnWndProc = WindowProc;
if (!RegisterClass(&wc)) {
return -1;
}
HWND hwnd = CreateWindow(
g WindowClass,
"鼠标绘图示例",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, g WindowWidth, g WindowHeight,
NULL,
NULL,
hInstance,
NULL
);
if (hwnd == NULL) {
return -1;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
MSG msg = {0};
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN:
DrawCircle((HDC)wParam, LOWORD(lParam), HIWORD(lParam), 10);
break;
case WM_RBUTTONDOWN:
DrawSquare((HDC)wParam, LOWORD(lParam), HIWORD(lParam), 20);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
void DrawCircle(HDC hdc, int x, int y, int radius) {
Ellipse(hdc, x - radius, y - radius, x + radius, y + radius);
}
void DrawSquare(HDC hdc, int x, int y, int side) {
Rectangle(hdc, x - side / 2, y - side / 2, x + side / 2, y + side / 2);
}
```
这段代码创建了一个窗口,并在窗口中处理鼠标左键和右键点击事件。左键点击时调用`DrawCircle`函数绘制一个圆圈,右键点击时调用`DrawSquare`函数绘制一个正方形。
请注意,这个示例是基于Windows平台的Win32 API编写的,如果你需要在其他平台上实现相同的功能,可能需要使用该平台下的相应图形库或API。
阅读全文