c语言 图形界面 入门,C语言是怎么实现图形界面的?

GTK就可以,一个基于C语言的免费、开源、跨平台图形工具包,可以直接使用C语言调用实现图形界面开发,下面我简单介绍一下这个工具包的安装和使用,这里以Windows平台为例:

1.首先,下载GTK安装包,这个可以直接到CSDN上下载,一个zip压缩包,直接解压就行,地址https://download.csdn.net/download/qq_34816564/10925737,解压后的文件如下:

5742d88244e71185d9e425ecfcbdc0c8.png

2.接着我们需要将bin目录添加到环境变量中,之后打开CMD窗口,输入命令“pkg-config --cflags gtk+-3.0”,若出现以下界面,则说明配置成功:

26bb55a0d0e4e2e48b9b1db2fb5e67e2.png

这里我们也可以查看一下GTK自带的Demo,运行命令“gtk3-demo”就会弹出Demo对话框,这里包含有所有官方自带的示例,双击就可查看运行效果:

9945cfe93e024ce340aaf24edfc47e21.png

3.接着我们就可以配置Code::Blocks(VS,Dev-C++等软件也行)实现C语言开发图形界面了,这里主要是引入GTK头文件和运行库,具体步骤如下:引入GTK头文件:点击菜单栏“Settings”->"Compiler...",在编译器中添加一行命令“`pkg-config --cflags gtk+-3.0`”,注意有`,如下:

2976086c2cb9cffc4a8f6864a704e862.png引入GTK运行库:还是在刚才的设置中,选择链接器,添加一行命令“`pkg-config --libs gtk+-3.0`”,注意也是`,如下:

8e3c80a40d6cf6f8a8fec23538d726fd.png最后就是编写C语言程序调用GTK开发图形界面了,这里需要先引入gtk.h头文件,之后就是调用相关控件,测试代码如下,非常简单,一个窗口程序:

9098665c34d4d5915759fe5ca31f7a5c.png

程序运行效果如下,还不错:

0a006ea67c46132319b97457ce2a9c63.png

至此,我们就完成了使用C语言来调用GTK开发图形用户界面。总的来说,整个过程非常简单,官方也给出了详细的用户使用文档和示例,非常适合初学者学习,不过,使用C语言开发图形界面的效率比较低,可以考虑使用一下Qt,C#等,效率能更高一些,网上也有相关资料和教程,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言。

https://www.toutiao.com/a6682723993356599556/

C语言从底开始写图形界面(现在基本不采用)

FC十大中文游戏,有魂斗罗系列、赤色要塞、重装机兵、淘金者、超级马里奥兄弟、坦克大战、松鼠大作战、恶魔城、俄罗斯方块等等,这些FC经典游戏基本都是采用从底层直接写图形。

8346c928a410ed2cecb795998c5a7a16.png

使用第三方库

用图形库是EsayX,支持VC++,VS,底层还是windows编程。操作简单,实用性方便。(近期写的电子相册如下)

362cfe9a5d84894438432b3dfd931d9f.png

特别说明:学习C/C++基础的时候,我们调用的是dos 窗口,windows自带的终端处理窗口,是没有属于自己的可视化窗口。

想必你问的是windows上用C实现图形界面,另外有些回答说C必须调用库才能实现图形界面。看得出,很多都是没有写过驱动的。首先,我们有一个显示器,显示器是一个个小点组成的。显示器有很多种接口,CPU/GPU通过这个接口(操作寄存器)和显示器通讯,在上面画上一个个点。然后点连成线,点变成圆。。。等等基本图形,把这些封装成函数,加之封装填充之类的函数,构成了最底层的GUI。后面又经过抽象,有图层等的概念。这就是图形库了。然后各种语言调用图形库完成显示。C语言完全可以从底开始写图形界面。但是没必要。

你能接触到的显示接口都是别人的库,比如DirectX,OpenGl,GDI,安卓的Canvas,ios的CoreGraphic等。

这个库一般分为两类,一类是面向GPU的操作库,一类是面向图形算法和内存的库。

面向GPU比较典型的就是DirectX和OpenGL.

他们接口偏向硬件,实现比较简单的纹理贴图功能,直白点就是给多个三角形,给纹理,然后显示。你可以拿着其他工具导出的模型(三角形和贴图定义),预先加载特定的纹理之后,作简单移动,缩放等操作。各种矢量变化控制工作由CPU端完成,而数据量较大的纹理贴图由GPU完成。

而GDI或者安卓的Canvas,ios的CoreGraphic是比较复杂的二维图形算法集成库,一般都是在CPU端作很多工作,然后把工作结果以内存帧的方式提交给GPU。这种方式下,CPU和GPU之间的传输带宽,以及你的工作机制非常影响速度。比如,安卓的SurfaceView画整屏会比更新局部的操作慢很多。

  • 13
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的绘制时钟图形的 C 语言代码: ```c #include <stdio.h> #include <math.h> #include <time.h> #define PI 3.14159265 int main() { int i, j; int x, y; int hour, minute, second; int hour_x, hour_y, minute_x, minute_y, second_x, second_y; int radius = 20; // 获取当前时间 time_t t = time(NULL); struct tm *tm = localtime(&t); hour = tm->tm_hour; minute = tm->tm_min; second = tm->tm_sec; // 画表盘 for (i = 0; i <= 360; i += 30) { x = radius * cos(i * PI / 180) + 25; y = radius * sin(i * PI / 180) + 25; printf("(%d, %d)\n", x, y); } // 画时针 hour_x = (radius - 10) * cos((hour * 30 + minute / 2) * PI / 180) + 25; hour_y = (radius - 10) * sin((hour * 30 + minute / 2) * PI / 180) + 25; printf("(%d, %d)\n", hour_x, hour_y); // 画分针 minute_x = (radius - 6) * cos(minute * 6 * PI / 180) + 25; minute_y = (radius - 6) * sin(minute * 6 * PI / 180) + 25; printf("(%d, %d)\n", minute_x, minute_y); // 画秒针 second_x = (radius - 3) * cos(second * 6 * PI / 180) + 25; second_y = (radius - 3) * sin(second * 6 * PI / 180) + 25; printf("(%d, %d)\n", second_x, second_y); return 0; } ``` 这段代码首先获取当前时间,然后使用与前面相同的方式画出了一个表盘。接着,它根据当前的小时、分钟、秒数计算出时针、分针、秒针的坐标,并将它们分别画出来。时针的角度为 `(hour * 30 + minute / 2)`,分针的角度为 `minute * 6`,秒针的角度为 `second * 6`。注意,在计算时针的角度时,需要加上分钟数除以 2 的角度,因为时针是缓慢移动的,不是每隔一小时才会移动一个刻度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值