热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用c语言画ex图像,c语言也能画画

该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include#include#definePI3.14159265LRESULTCALLBACKWindowProcedure(HWN

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#define PI 3.14159265

LRESULT CALLBACK WindowProcedure ( HWND, UINT, WPARAM, LPARAM );

void OnPaint ( HDC );

void DrawLine ( HDC, int, int, int, int );

void DrawFlower ( HDC, int, int, COLORREF );

void DrawTie ( HDC, int, int, COLORREF );

int WINAPI WinMain ( HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil )

{

char szClassName[] = TEXT ( "DrawFlower" );

HWND hwnd;

MSG msg;

WNDCLASSEX wc = { 0 };

wc.hInstance = hThisInstance;

wc.lpszClassName = szClassName;

wc.lpfnWndProc = WindowProcedure;

wc.style = CS_DBLCLKS;

wc.cbSize = sizeof ( WNDCLASSEX );

wc.hIcon = LoadIcon ( NULL, IDI_APPLICATION );

wc.hIconSm = LoadIcon ( NULL, IDI_APPLICATION );

wc.hCursor = LoadCursor ( NULL, IDC_ARROW );

wc.hbrBackground = ( HBRUSH ) ( COLOR_WINDOW+1 );

if ( !RegisterClassEx ( &wc ) ) return 0;

hwnd = CreateWindowEx ( 0, szClassName, szClassName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, HWND_DESKTOP, NULL, hThisInstance, NULL );

ShowWindow ( hwnd, nFunsterStil );

while ( GetMessage ( &msg, NULL, 0, 0 ) )

{

TranslateMessage ( &msg );

DispatchMessage ( &msg );

}

return msg.wParam;

}

LRESULT CALLBACK WindowProcedure ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )

{

PAINTSTRUCT ps;

HDC hdc;

switch ( msg )

{

case WM_PAINT:

hdc = BeginPaint ( hwnd, &ps );

OnPaint ( hdc );

EndPaint ( hwnd, &ps );

break;

case WM_DESTROY:

PostQuitMessage ( 0 );

break;

default:

return DefWindowProc ( hwnd, msg, wParam, lParam );

}

return 0;

}

void OnPaint ( HDC hdc )

{

HPEN h;

// 画蝴蝶结

DrawTie ( hdc, 195, 354, RGB ( 255,0,255 ) );

// 画枝干

h = CreatePen ( PS_SOLID, 1, RGB ( 0,255,0 ) );

SelectObject ( hdc, h );

DrawLine ( hdc, 189, 372, 180, 400 );

DrawLine ( hdc, 310, 160, 325, 68 );

DrawLine ( hdc, 310, 160, 187, 374 );

DrawLine ( hdc, 150, 140, 189, 374 );

DrawLine ( hdc, 430, 176, 190, 374 );

DrawLine ( hdc, 370, 110, 187, 374 );

DrawLine ( hdc, 250, 72, 189, 372 );

DrawLine ( hdc, 253, 192, 190, 374 );

DrawLine ( hdc, 189, 372, 187, 400 );

DrawLine ( hdc, 189, 372, 182, 400 );

DrawLine ( hdc, 189, 372, 200, 120 );

DeleteObject ( h );

// 画花朵

DrawFlower ( hdc, 320, 160, RGB ( 255,0,0 ) );

DrawFlower ( hdc, 200, 120, RGB ( 0,255,0 ) );

DrawFlower ( hdc, 150, 140, RGB ( 0,0,255 ) );

DrawFlower ( hdc, 430, 176, RGB ( 255, 127, 0 ) );

DrawFlower ( hdc, 370, 110, RGB ( 239, 179, 52 ) );

DrawFlower ( hdc, 250, 72, RGB ( 235, 95, 186 ) );

DrawFlower ( hdc, 325, 68, RGB ( 228, 119, 98 ) );

DrawFlower ( hdc, 253, 190, RGB ( 247, 169, 117 ) );

}

// 画花朵

void DrawFlower ( HDC hdc, int x, int y, COLORREF c )

{

int x1, y1, x2, y2;

const int d = 30;

double a, e;

HPEN h;

h = CreatePen ( PS_SOLID, 1, c );

SelectObject ( hdc, h );

for ( a &#61; 0; a <2 * PI; a &#43;&#61; PI / 360 )

{

e &#61; d * ( 1 &#43; sin ( a * 5 ) );

x1 &#61; ( int ) ( x &#43; e * cos ( a ) );

y1 &#61; ( int ) ( y &#43; e * sin ( a ) );

x2 &#61; ( int ) ( x &#43; e * cos ( a &#43; PI / 5 ) );

y2 &#61; ( int ) ( y &#43; e * sin ( a &#43; PI / 5 ) );

DrawLine ( hdc, x1, y1, x2, y2 );

}

DeleteObject ( h );

}

// 画蝴蝶结

void DrawTie ( HDC hdc, int x, int y, COLORREF c )

{

int x1, y1, x2, y2;

const int d &#61; 100;

double a, e;

HPEN h;

h &#61; CreatePen ( PS_SOLID, 1, c );

SelectObject ( hdc, h );

for ( a &#61; 0; a <2 * PI; a &#43;&#61; PI / 360 )

{

e &#61; d * ( 1 &#43; sin ( a * 4 ) );

x1 &#61; ( int ) ( x &#43; e * cos ( a ) );

y1 &#61; ( int ) ( y &#43; e * sin ( a ) / 2 );

x2 &#61; ( int ) ( x &#43; e * cos ( a &#43; PI / 9 ) );

y2 &#61; ( int ) ( y &#43; e * sin ( a &#43; PI / 9 ) / 4.5 );

DrawLine ( hdc, x1, y1, x2, y2 );

}

DeleteObject ( h );

}

//画线

void DrawLine ( HDC hdc, int x1, int y1, int x2, int y2 )

{

MoveToEx ( hdc, x1, y1, NULL );

LineTo ( hdc, x2, y2 );

} C/C&#43;&#43;学习 487790381群

e05e7939793b4c906641972e4a1eae75.png



推荐阅读
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 解决文件名过长下载失败问题的jQuery方案
    本文介绍了使用jQuery解决文件名过长导致下载失败的问题。原方案中存在文件名部分丢失的问题,通过动态生成隐藏域表单并提交的方式来解决。详细的解决方案和代码示例在文章中给出。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 《2017年3月全国计算机等级考试二级C语言上机题库完全版》由会员分享,可在线阅读,更多相关《2017年3月全国计算机等级考试二级C语言上机题库完全版( ... [详细]
  • C语言自带的快排和二分查找
    Author🚹:CofCaiEmail✉️:cai.dongjunnexuslink.cnQQ😙:1664866311personalPage&#x ... [详细]
  • c语言基础编写,c语言 基础
    本文目录一览:1、C语言如何编写?2、如何编写 ... [详细]
  • 利用空间换时间减少时间复杂度以及以C语言字符串处理为例减少空间复杂度
    在处理字符串的过程当中,通常情况下都会逐个遍历整个字符串数组,在多个字符串的处理中,处理不同,时间复杂度不同,这里通过利用空间换时间等不同方法,以字符串处理为例来讨论几种情况:1: ... [详细]
author-avatar
Huiying_Liu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有