精华内容
下载资源
问答
  • C++图形用户界面开发框架Qt 6.x入门级教程 - 开发工具简介
    千次阅读
    2021-10-13 09:28:57

    Qt旨在一次性开发应用程序和用户界面,然后将它们部署到多个桌面和移动操作系统上。

    点击获取Qt下载

    Qt Creator

    Qt Creator 为您提供了在整个应用程序开发生命周期中完成任务的工具,从创建项目到在目标平台上部署应用程序。 Qt Creator 通过提供向导来引导您逐步完成项目创建过程、创建必要的文件并根据您所做的选择指定设置,从而自动执行一些任务,例如创建项目。 此外,它还通过提供语义突出显示、检查代码语法、代码完成、重构操作和其他有用的功能来加速一些任务,例如编写代码。

    C++图形用户界面开发框架Qt - 开发工具图

    设计工具

    Qt Designer是 Qt Creator 中的一个工具,用于为 Qt Widgets 设计和构建图形用户界面 (GUI)。 您可以在可视化编辑器中组合和自定义小部件或对话框,并使用不同的样式和分辨率对其进行测试。Qt Designer也可作为独立工具使用,两个版本的 Qt Designer 仅在某些功能上有所不同,例如资源文件的使用以及如何在设计和编辑模式下切换。

    对于Qt Quick应用程序,您可以使用集成在Qt Creator中的Qt Quick Designer,Qt Quick Designer 在打开的 Qt Quick 项目的编辑模式下可用。

    与设计器合作

    Qt 允许设计人员从 2D 和 3D 程序导入资产、创建布局和流程,并为开发人员生成代码。 Qt Design Studio 是一种工具,可提供丰富且流畅的组件、代码编辑器、基于时间线的动画、可视化效果、布局和原型制作的实时预览,Qt Design Studio 生成供开发人员在 Qt Creator 中使用的代码。

    构建工具

    Qt Creator 为不同的构建系统创建项目模板,您可以为目标平台和构建环境的不同组合创建套件。Qt Creator 支持 CMake、qmake、Qbs、Autotools、Nimble、Meson 和 IncrediBuild 项目。

    配置和构建 Qt

    您可以使用 CMake 或 qmake 从源代码配置和构建Qt,自定义配置适用于 Qt 开发人员以及将 Qt 移植到不同目标。t Platform Abstraction是一个抽象层,用于将 Qt 移植到不同的平台和目标上。

    本地化及帮助工具

    您可以将应用程序本地化为不同的语言。 Qt 中有一个国际化框架,用于处理不同的书写系统、翻译界面以及以不同格式显示数字、日期和货币。 Qt Linguist 是开发人员、翻译人员和发布经理在应用程序中实现本地化的工具,不同的角色可以协作以在用户界面中生成、存储和部署翻译文本。

    您可以使用Qt Help框架为复杂的应用程序创建和打包帮助文件,Help框架涉及基于 XML 的格式和工具来创建内容、设置应用程序手册的顺序和过滤器。

    Qt商用组件推荐

    • QtitanRibbon - Ribbon UI组件:是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibbon致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
    • QtitanChart - Qt类图表组件:是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。
    • QtitanDataGrid - Qt网格组件:提供了一套完整的标准 QTableView 函数和传统组件无法实现的独特功能。使您能够将不同来源的各类数据加载到一个快速、灵活且功能强大的可编辑网格中,支持排序、分组、报告、创建带状列、拖放按钮和许多其他方便的功能。
    • QtitanNavigation:QtitanNavigationDesignUI 组件是一组 GUI 控件,它实现了菜单、导航框、命令栏等导航界面,并让您以更少的滚动和点击次数有效地查看所有实体(工作区、网格或其他项目)。
    • QtitanDocking:允许您像 Visual Studio 一样为您的伟大应用程序配备可停靠面板和可停靠工具栏。黑色、白色、蓝色调色板完全支持 Visual Studio 2019 主题!

    Qt技术交流群4:166830288      欢迎一起进群讨论

    更多Qt产品教程、下载、正版授权资讯,请点击获取

    更多相关内容
  • C++图形界面设计Qt4-中文版..............................
  • C++图形界面计算器

    热门讨论 2012-12-22 21:42:22
    C++语言 编写的带图形界面的计算器,能实现加减乘除和清零功能。代码清晰,适合初学者学习。
  • 图形界面学生管理系统(最新版所有功能均实现)c++ c++学生管理系统 图形界面学生管理系统(最新版所有功能均实现)c++ c++学生管理系统
  • c++贪吃蛇实现/图形化编程 大多数用c++实现贪吃蛇小游戏比较繁琐,该程序以及其简单的思路和代码来实现贪吃蛇小游戏的逻辑过程,另外加上图形化编程,可以更有利于初学者进行上手学习。
  • C++图形化编程(五子棋)

    千次阅读 2022-04-10 13:57:11
    关于图形库EasyX:需要用到该图形化库的库函数,没有下载安装的需要先下载安装改库,关于这个库的函数可自己找相关文档了解; 由于代码较多,为了方便管理,我添加了6个头文件来结构模块,所以不贴出完整代码,...

    手把手教你写五子棋程序

    • 编译环境:vs2019;
    • 注意事项:项目属性中高级的字符集选项要设置为多字节;
    • 关于图形库EasyX:需要用到该图形化库的库函数,没有下载安装的需要先下载安装改库,关于这个库的函数可自己找相关文档了解;
    • 由于代码较多,为了方便管理,我添加了6个头文件来结构化模块化,所以不贴出完整代码,会挑出主要部分来叙述,我会将源文件上传CSDN,有需要可自行下载;
    • 注:文章作为自己成长的记录,不足之处还请多指教,师承大帅。

    项目分析

    • 开始界面:一个简单的开始界面,有开始游戏和退出两个按钮和功能;
    • 下面我们首先来看一下程序截图,然后封装这两个按钮:
    程序截图

    在这里插入图片描述

    使用结构体封装按钮代码:
    typedef struct MYBUTTON
    {
    	int x;
    	int y;
    	int width;
    	int height;
    	char* str;
    	COLORREF cur_Color;
    	COLORREF in_Color;
    	COLORREF out_Color;
    }MyButton, * p_MyButton;
    
    • 首先定义一个结构体,包含按钮的x,y轴坐标,宽,高按钮颜色等;

    关于结构体别名

    • 不加typedef:struct 结构名;然后就可以用结构体名来定义结构体变量;
    • 加typedef: typedef struct 结构体名 { 结构体 }结构体别名XXX;
    • 结构体别名就相当于:struct 结构体名 结构体别名;
    • 使用别名可以很方便的定义结构体变量。
    初始化按钮结构体:
    p_MyButton setButton(int x,int y,int width,int height,
    	COLORREF in_color,COLORREF out_color,const char *str)
    {
    	p_MyButton pb = (p_MyButton)malloc(sizeof(MyButton));
    	assert(pb);
    	
    	pb->x = x;
    	pb->y = y;
    	pb->width = width;
    	pb->height = height;
    	pb->cur_Color = out_color;
    	pb->in_Color = in_color;
    	pb->out_Color = out_color;
        //这里这样写是因为字符串不能直接赋值
    	int strLong = strlen(str) + 1;
    	pb->str = (char*)malloc(sizeof(char) * strLong);
    	assert(pb->str);
    	strcpy_s(pb->str, strLong, str);
    
    	return pb;
    }
    
    封装按钮
    void draw_Button(p_MyButton pb)
    {
        //这里调用easyx的库函数,easyx是一个封装的图形库
    	setlinecolor(BLUE);
    	setfillcolor(pb->cur_Color);
    	fillrectangle(pb->x, pb->y, pb->x + pb->width, 
    	pb->y + pb->height);
    
    	settextcolor(WHITE);
    	setbkmode(TRANSPARENT);
    
    	settextstyle(30, 0, "楷体");
    
    	int textw = textwidth(pb->str);
    	int texth = textheight(pb->str);
    
    	int x = pb->x + (pb->width - textw) / 2;
    	int y = pb->y + (pb->height - texth) / 2;
    	outtextxy(x, y, pb->str);
    }
    
    关于文字居中问题:

    • 可以据此图分析其原理,文字居中就相当于求解 ( a, b)这样的一个简单数学题;
    游戏问题:
    • 我们可以将整个棋盘理解为一个二维数组,0表示未落子为空的状态,1表示黑子(或白子),2表示白字(或黑子);
    • 考虑到后期能会为玩家添加某些属性,所以我定义了这样一个结构体来管理(包含了玩家走的步数和唯一标识的ID,这个ID我用来区分和标识是该谁落子和谁落子):
    typedef struct PCUSER
    {
    	int User_ID;
    	int User_Step;
    
    }Pc_User, * p_PcUser;
    
    下面展示主函数:
    int main()
    {
    	StartMenu();
    
    	ExMessage m;
    	//初始化按钮
    	p_MyButton pb_1_play = setButton(100, 100, 200, 40, RED, BLUE, "play game");
    	p_MyButton pb_2_exit = setButton(100, 160, 200, 40, BLUE, RED, "exit");
    	
    	//初始化玩家
    	p_PcUser pc_1 = setUser(1, 0);
    	p_PcUser pc_2 = setUser(2, 0);
    
    	//初始化棋子
    	p_MyChess pq_1 = setChess(5, WHITE);
    	p_MyChess pq_2 = setChess(5, BLACK);
    
    	int Arr_Chess[21][21] = { 0 };
    
    	//胜利function
    	bool isWin(const int Arr[][21],p_PcUser pc);
    	void textWin();
    
    	//void show(const int Arr[][21]);
    
    	BeginBatchDraw();
    	while (1)
    	{
    		FlushBatchDraw();
    		peekmessage(&m, EM_MOUSE);
    		draw_Button(pb_1_play);
    		draw_Button(pb_2_exit);
    		if (click_Button(m, pb_1_play))
    		{
    			FlushBatchDraw();
    			break;
    		}
    		if (click_Button(m, pb_2_exit))
    		{
    			exit(OVERFLOW);
    		}
    	}
    
    	drawMap();
    	//drawChess(200, 200, BLACK);
    	
    	while (1)
    	{
    		FlushBatchDraw();
    		while (peekmessage(&m, EM_MOUSE))
    		{
    			//cout << "进来了" << endl;
    			if (pc_1->User_Step <= pc_2->User_Step && m.message == WM_LBUTTONDOWN
    				&& Arr_Chess[getX_Click(m)+4][getY_Click(m)+4]==0)
    			{
    				cout << "进来if条件了" << endl;
    				if (Click_Draw_Chess(m, pq_1))
    				{
    					Arr_Chess[getX_Click(m) + 4][getY_Click(m) + 4] = pc_1->User_ID;
    					pc_1->User_Step++;
    					//show(Arr_Chess);
    				}
    				//cout << pc_1->User_Step << ' ' << pc_2->User_Step << endl;
    				
    				break;
    			}
    			else 
    				if(pc_1->User_Step > pc_2->User_Step && m.message == WM_LBUTTONDOWN
    					&& Arr_Chess[getX_Click(m)+4][getY_Click(m)+4] == 0)
    			{
    					if (Click_Draw_Chess(m, pq_2))
    					{
    						Arr_Chess[getX_Click(m) + 4][getY_Click(m) + 4] = pc_2->User_ID;
    						pc_2->User_Step++;
    						//show(Arr_Chess);
    				    }
    				
    				//cout << pc_1->User_Step << ' ' << pc_2->User_Step << endl;
    				break;
    			}
    		}
    		FlushBatchDraw();
    		//cout << "老弟来啦!" << endl;
    		if (pc_1->User_Step >= 5 && isWin(Arr_Chess, pc_1))
    		{
    			textWin();
    			FlushBatchDraw();
    			//cout << "玩家1胜利" << endl;
    			break;
    		}
    		if (pc_2->User_Step >= 5 && isWin(Arr_Chess, pc_2))
    		{
    			textWin();
    			FlushBatchDraw();
    			//cout << "玩家2胜利" << endl;
    			break;
    		}
    	}
    
    	while (1);
    
    	EndBatchDraw();
    
    	return 0;
    }
    
    • 要解决的冲突问题:该谁落子;棋子不能覆盖(后手落子的玩家不能覆盖前一个玩家的落子);

    • 要解决的判断胜负问题:我是用二维数组来做的棋盘,用全盘扫描来判断是否有玩家符合,所以要考虑扫描溢出的问题,下面我们来看一下扫面图解:
      在这里插入图片描述

    • 玩家胜出的情况无非就是我圈出来的这几种,所以判断胜负只需要做一个二维数组的全盘扫描,但是要注意扫描溢出问题,所以在定义棋盘数组的时候可以定义得大一些,我就吧棋盘的二维数组定义为2121的,但实际用到的只有1313;

    • 关于音乐、音效,贴图等功能,各位可先自行尝试,后续我会分享有关内容。

    • 下面来看一看运行截图:
      在这里插入图片描述

    • 关于该项目的主要几点和内容分析我就分析到这儿,如有疑问可私信或评论讨论,不足之处还请各位大佬指教,最后附上项目的网盘链接(嫌弃下载慢的可在我上传的资源中下载):https://pan.baidu.com/s/1txsNC7zMbJD3mvOcJog0WA 提取码:8bbr

    展开全文
  • duilib c++图形界面开发库
  • 怎样用C/C++开发图形界面(GUI)程序——点名器示例 原文链接:https://mp.weixin.qq.com/s/O9PXaibAyd__ONBBASYI_Q 仍旧是Via What系列,昨天熬夜读了FLTK的文档,今天终于可以给大家介绍一下了。为什么首选这个...

    怎样用C/C++开发图形界面(GUI)程序——点名器示例

    原文链接https://mp.weixin.qq.com/s/O9PXaibAyd__ONBBASYI_Q

    在这里插入图片描述
    仍旧是Via What系列,昨天熬夜读了FLTK的文档,今天终于可以给大家介绍一下了。为什么首选这个GUI框架来介绍,个人感觉它有下面几个好处:

    • GUI开发的急救之章
    • 对刚开始开发GUI程序的同学比较友好
    • 文档完整详实
    • 不需要依赖其它杂七杂八的东西

    如果你也受够了每次写出的程序只有DOS那个黑框,或是想开发自己的GUI工具,亦或是对GUI程序的开发技术感到好奇,那就一起学习一下吧~

    0。GUI vs CLI

    简单介绍一下这两者,GUI(Graphical User Interface)和CLI(Command-Line Interface)是两种不同形式的人机接口,说白了就是用户使用某个软件时,那个软件所呈现出的界面外观。CLI编过C语言程序的同学应该都很熟悉,就是那个黑色的窗口,然后打出几个白色的字符:
    在这里插入图片描述
    这种程序又叫控制台应用程序,因为并不是所有的程序都有使用GUI界面的需求,所以这种形式的程序也一直存在(比如Linux系统中大量的工具程序都是以命令行的方式使用的),这种程序对专业用户来说比较方便高效,但对普通用户却不友好。
    GUI,也是大家平时使用较多的软件呈现方式,记事本、画图、计算器…这些有菜单、光标、图片…,并且交互方式也不局限于键盘,可以用鼠标指指点点,也可以用数位板、控制器等其它外部设备。当然了,GUI比CLI出现的晚,计算机早期都是用的CLI的形式,至于我们如今用的电脑的这种界面和交互形式,还得追溯到上世纪苹果、微软和施乐公司的相爱相杀。

    1。GUI开发技术

    CLI并没有什么花里胡哨的东西,但GUI涉及到的开发技术却要复杂的多,下面分析一个不完整的流派列表:

    • 从系统的层面来说,Windows、Linux和Mac的界面技术都不相同
    • 下面从Windows平台上的一些技术来说,第一是使用Windows系统提供的API来做GUI界面开发,这方面有一本流传经典的书籍,Charles Petzold的《Windows程序设计》(第五版)。
    • 接下来是微软之后推出的一个界面开发框架MFC(Microsoft Foundation Classes),这个框架历史已经很悠久了,不过仍然是一个值得了解的框架。微软推出它也是有多种考虑,其一是之前基于Windows API的界面开发,仍然属于结构化的编程模式,但MFC完全基于面向对象的开发思想,而面向对象的开发模式是GUI开发的银弹;其二是应对当时的市场竞争。关于MFC也有一本与《Windows程序设计》齐名的书籍,Jeff Prosise的《MFC Windows程序设计》。
    • 这其间还有一种基于可视化的GUI开发方式,如Visual Basic和Delphi等。这种开发技术又称为Rapid Applicaion Development(RAD)。
    • 后来微软又完成自己.NET框架的备战,并在C#语言的基础上推出了WinForm开发技术。
    • 另外还有数不清的GUI开发库,比如Qt、wxWidgets、WPF这种。当然还有我们今天要介绍的FLTK。
    • 一种基于Chrome核的桌面软件开发技术,Chromium Embedded Framework(CEF)。
    • Windows 10之后微软又推出了UWP界面构建相关的技术。

    2。FLTK

    FLTK的全称是Fast Light Tookit,是一个快速、轻量的GUI开发框架。下面是引用官方的一段介绍:

    FLTK是跨平台的C ++ GUI工具箱。FLTK提供了现代化的GUI功能,而没有膨胀,并通过OpenGL®及其内置的GLUT仿真支持3D图形。FLTK设计得足够小,并且具有足够的模块性,可以静态链接,但可以作为共享库正常工作。FLTK还包括一个出色的UI生成器,称为FLUID,可在几分钟内创建应用程序。

    网址:https://www.fltk.org/index.php
    源码:https://www.fltk.org/software.php
    文档:https://www.fltk.org/documentation.php
    下面我们通过一个小例子来展示使用FLTK构建GUI程序的过程,在开始之前,需要取得FLTK的源码,并编译成静态库供我们自己开发过程中调用。使用Visual Studio 2013版本的同学可以直接下载我编译好的一个静态库:https://pan.baidu.com/s/1rQtGmVzOYKRR-jV9lduHcQ 提取码:qhpd,下载的文件结构如下:
    在这里插入图片描述
    当然,大家也可以使用自己版本的VS进行编译,这里也提供了一份FLTK的源码:https://pan.baidu.com/s/1M9R0QNWaR_Lp1_j_bYvqoA 提取码:ucz7。如果过程中遇到什么麻烦,可以私信我讨论~

    3。GUI点名器

    在这里插入图片描述
    点名器,大家应该都不陌生,我也是中毒者之一,但是它开发起来简单,比较适合在这里介绍。借助FLTK库,几十行代码就可以完成这个比较实用的小工具,感兴趣的话,大家也可以打开脑洞,做一些稀奇古怪的工具出来。如果大家想进一步学习FLTK,可以去翻翻FLTK的文档,里面有更综合一些的例子值得研究。

    • 布局。开发GUI程序,布局是很必要的一个环节,当然了,因为这个工具非常简单,这里也没有必要再把他小题大做,只要稍微把这几个控件(菜单条、展示框和按钮)安排一下就可以了。
    • 功能。快速理一下这个工具的用法,它需要我们导入一张班级名单,点击’>'按钮后,人名开始快速切换,再次点击后,暂停,然后人名对应的那个同学在内心深处传来一声痛苦的嚎叫。
      在这里插入图片描述
    • 导入功能。为不失重点,我们使用.txt文件来作为人名导入格式,使用C++代码迅速将这个功能实现一下:
    void menu_import_clicked(Fl_Widget *widget, void *data)
    {
     char *new_file = fl_file_chooser("Import file?", "*.txt", "");
     if (new_file != NULL)
     {
      std::ifstream ifs(new_file);
      if (ifs.is_open())
      {
       std::string line;
       while (ifs >> line)
        g_names.push_back(line);
       ifs.close();
      }
      g_btn->activate();
     }
    }
    
    • 从代码中可以看出,我们实际完成的工作,只是将文本中的人名读到程序中的一个缓冲区当中,供之后快速切换名字之用。至于点击’Import…'菜单项,然后弹出文件选择的文本框,都由FLTK封装好了,也就是代码中的fl_file_chooser函数调用,当它返回时,我们自然得到了用户所期望导入的人员名单的路径。
    • 按钮。我们使用了一个普通的按钮来实现这种开始与暂停功能,我相信FLTK有更适合解决这种需求的按钮,但我们用普通按钮来实现也非常容易,窍门就是使用一个静态变量来记录点击次数的奇偶性:
    void btn_clicked(Fl_Widget *widget)
    {
     static bool is_odd = true;
    
     if (is_odd)
     {
      widget->label("| |");
        ...
      is_odd = false;
     }
     else
     {
      widget->label(">");
        ...
      is_odd = true;
     }
    }
    
    • 切换名字。点名器的核心功能自然是能够快速切换名字了,这里的实现思路是使用定时器,我们使用系统的定时器函数,然后设置了每80ms更新列表中的下一个名字,于是名字就快速切换开来:
      在这里插入图片描述
    • 下面是每当定时器被触发时,会调用的函数,我们的做的极为有限,把已经准备好名字列表,按索引赋值给展示标签,如果到达最后一个,我们就让它从头开始。
    void WINAPI timer_proc(HWND hwnd, UINT msg, UINT_PTR id, DWORD elapsed)
    {
     static int name_index = 0;
     g_timer_id = id;
    
     if (name_index >= g_names.size())
      name_index = 0;
    
     g_name_box->label(g_names[name_index++].c_str());
    }
    
    • 回调函数。还有一个问题我们一直没谈,也就是上面这些xxx_clicked函数是谁调用的呢?因为好像我们只是准备了这些函数,并没有在我们的程序中调用它们,但我们点击相应的按钮,的确触发了它们。结论是,这些是FLTK库帮我们调用的。那FLTK库是怎样知道哪个按钮对应哪个函数呢?在我们的实现中可以看到类似的代码:
    btn->callback(btn_clicked);
    about_confirm->callback(about_confirm_clicked)
    { "&Import...", 0, (Fl_Callback *) menu_import_clicked },
    { "E&xit", FL_COMMAND + 'q', (Fl_Callback *) menu_quit_clicked, 0}
    {"&About", 0, (Fl_Callback *) menu_about_clicked },
    
    • 这些代码片段便是我们告诉FLTK库,我们要将哪个函数与哪个控件联系在一起,这是GUI应用程序开发中一种很流行的技术,Qt库中被称为”信号-槽“(signal-slot)机制。其实,它们更广泛的名字是”回调函数“(callback-function)。
    • 更多。这只是一个最原始的点名器雏形,可以让其支持xls表格的读取,可以让其有点名记录,可以加上切换名字的动画效果,可以让其点名算法更智能(如10次内不重复点),可以自动生成和导出缺勤报告,…一个课堂管理类程序呼之欲出:)

    4。源码与结语

    点名器的源码下载:
    https://pan.baidu.com/s/1ikReql_RAawtstPJA6MHmg 提取码:5s1t
    FLTK库就简要介绍到这,有需求的同学可以继续前进,提前熟悉使用一个GUI框架有很多好处,如写工具,提高编码能力,也可以完成一些任务…遇到什么麻烦,欢迎大家找我交流~

    来源 | 作者:zhumo
    编辑:zhumo
    封面:zhumo

    在这里插入图片描述

    听说给点赞的最后都会混的和我一样~

    文章首发~
    公众号:Dawo

    展开全文
  • C++】游戏GUI图形界面示例程序 by浅墨

    千次下载 热门讨论 2013-11-17 22:12:52
    源码的配套博文是 《 【Visual C++】游戏开发五十六 浅墨DirectX教程二十三 打造游戏GUI界面(一)》 ,文章地址http://blog.csdn.net/poem_qianmo/article/details/16384009, 点击Release文件夹下的exe文件可以...
  • C++可视化界面EasyX图形库的安装以及简单使用

    千次阅读 多人点赞 2020-10-05 19:50:53
    EasyX图形库是一个比较简单容易上手的可视化界面工具包,一般配合VC6.0就可以使用,也可以配合VS系列,这里简单介绍下VC6.0的安装和简单使用。 一、EasyX的安装 然后点击进去下载 如上所示,点击保存文件。 一直...

    EasyX图形库是一个比较简单容易上手的可视化界面工具包,一般配合VC6.0就可以使用,也可以配合VS系列,这里简单介绍下VC6.0的安装和简单使用。

    一、EasyX的安装
    在这里插入图片描述
    然后点击进去下载

    在这里插入图片描述
    在这里插入图片描述
    如上所示,点击保存文件。

    在这里插入图片描述
    一直点击下一步。

    在这里插入图片描述就到现在这个界面,easyX安装程序会自动检索你的电脑上已经安装的Vs系列编辑器,比如我电脑安装的是Visual C++6.0被检索出来,点击安装就行,然后就是安装完成了。很简单吧

    二、使用示范

    easyX图形库的功能是比较简单的,可以结合鼠标进行操作,也可以加载音频播放,比如做一个游戏就可以设置音乐效果。

    这里只简单演示图片的加载使用,更多功能可以直接参考官网的一些使用教程。

    打开画布
    注意图形库的头文件是graphics.h

    #include<graphics.h>
    #include<iostream>
    #include<conio.h>
    using namespace std;
    int main()
    {
    	initgraph(1000,600);//打开1000x600大小的画布
    	getch();//按任意键
    	closegraph();//关闭画布
    	return 0;
    }
    
    

    这是最简单的打开画布关闭画布的代码指令,运行结果如下。
    在这里插入图片描述
    什么也没有,现在给这个画布上面进行绘画,比如加载图片并且显示,代码如下:

    #include<graphics.h>
    #include<iostream>
    #include<conio.h>
    using namespace std;
    int main()
    {
    	initgraph(1000,600);//打开1000x600大小的画布
    	IMAGE bg;//定义一个图像指针变量bg
    	//根据绝对路径(也可以是相对路径,如果你的图片位置和这个代码是同一个文件夹下,直接写文件名)加载图片内容
    	//这里是把图片按500x300大小进行调整
    	loadimage(&bg,_T("E:\\储物柜\\Game\\test.jpg"),500,300);
    	putimage(0,0,&bg);//把图片在左上角(0,0)位置进行显示
    	getch();//按任意键
    	closegraph();//关闭画布
    	return 0;
    }
    
    

    其中test.jpg是一张擎天柱的图片,运行结果如下。
    在这里插入图片描述上述擎天柱图片只是按500x300大小进行显示。

    这里想要把一个图放在擎天柱背景图上,如下。

    #include<graphics.h>
    #include<iostream>
    #include<conio.h>
    using namespace std;
    int main()
    {
    	initgraph(1000,600);//打开1000x600大小的画布
    	IMAGE bg;//定义一个图像指针变量bg
    	//根据绝对路径(也可以是相对路径,如果你的图片位置和这个代码是同一个文件夹下,直接写文件名)加载图片内容
    	//这里是把图片按500x300大小进行调整
    	loadimage(&bg,_T("E:\\储物柜\\Game\\test.jpg"),500,300);
    	putimage(0,0,&bg);//把图片在左上角(0,0)位置进行显示
    	//加载另外一张图片并且显示
    	IMAGE t1;
    	loadimage(&t1,_T("E:\\储物柜\\Game\\t1.jpg"),100,100);
    	putimage(200,100,&t1);
    
    	getch();//按任意键
    	closegraph();//关闭画布
    	return 0;
    }
    
    

    得到的结果是这样的
    在这里插入图片描述
    能不能把苹果形成透明贴图那样贴擎天柱上面,可以,先把苹果图弄成下面这样:
    在这里插入图片描述上面这个图命名t1.jpg

    在这里插入图片描述
    上面这个图命名为t2.jpg。

    执行下面代码。

    #include<graphics.h>
    #include<iostream>
    #include<conio.h>
    using namespace std;
    int main()
    {
    	initgraph(1000,600);//打开1000x600大小的画布
    	IMAGE bg;//定义一个图像指针变量bg
    	//根据绝对路径(也可以是相对路径,如果你的图片位置和这个代码是同一个文件夹下,直接写文件名)加载图片内容
    	//这里是把图片按500x300大小进行调整
    	loadimage(&bg,_T("E:\\储物柜\\Game\\test.jpg"),500,300);
    	putimage(0,0,&bg);//把图片在左上角(0,0)位置进行显示
    	//加载另外一张图片并且显示
    	IMAGE t1,t2;
    	loadimage(&t1,_T("E:\\储物柜\\Game\\t1.jpg"),100,100);
    	loadimage(&t2,_T("E:\\储物柜\\Game\\t2.jpg"),100,100);
    	//两张图片结合形成透明贴图
    	//注意下面这两行代码顺序不能颠倒
    	putimage(200,100,&t2, SRCAND);
    	putimage(200,100,&t1, SRCPAINT);
    	getch();//按任意键
    	closegraph();//关闭画布
    	return 0;
    }
    
    

    运行结果如下
    在这里插入图片描述
    这主要针对做游戏怎么把我们的游戏人物放置在背景图中,具体更多详细复杂的用法可以参考easyX图形库官网进行学习。

    展开全文
  • 怎么用C++图形界面程序?

    万次阅读 多人点赞 2019-06-25 14:24:17
    回想当年,我初学C语言的时候,也有这样的困惑:为啥我写的程序背景是黑不溜秋的,文字也是一行一行显示的,而别人写的程序都带着界面和按钮? 这得从何说起呢? 由于我们最常接触的就是Windows系统中各种带有窗体...
  • C++图形化GUI开发框架推荐

    万次阅读 2020-04-13 22:47:19
    图形用户界面(Graphical User Interface,简称 GUI),下面介绍一下C++常用的GUI开发框架
  • 内部排序图形化界面

    2012-01-21 16:58:43
    数据结构内部排序的C++源代码,有冒泡法,快速排序,插入排序等六种方法可供选择,并且可以选择查看第几次排序的结果,好用且实用。用mfc实现图形化界面,方便交互输入。
  • EasyX应用 #include #include int main(void) { //首先初始化图形界面(窗口的大小,单位:像素) initgraph(640, 480); //设置背景颜色 setbkcolor(RGB(64, 128, 128)); //铺满背景 cleardevice(); //设置画笔的颜色 ...
  • 主要介绍了C++实现图形界面时钟表盘代码,涉及坐标函数的应用及图形界面程序设计,需要的朋友可以参考下
  • pdf文件 《Visual C++图形用户界面开发指南》李博轩 等 编著 2000年11月第1版 去除了原PDF中密码,方便增加书签
  • C++ 图形界面、Qt 简单的使用、Hello world

    万次阅读 多人点赞 2017-11-20 21:46:31
    之前大一使用C++写一些简单的信息管理系统,界面总是黑屏白字,体验十分差,为了给应用程序增加一个 UI 图形界面,使用了Qt5就可以轻松做到,而且操作十分键,很多都是编译器帮你做好了基础的了。 下面演示如构建一...
  • 使用QT速成C++简单图形界面

    千次阅读 2020-07-03 18:00:04
    这几天遇到一个问题,需要在2、3天之内给一个已经编写好的简单C++命令行程序编写一个简单的图形界面。 由于之前没有接触过图形界面编程,所以不知道能不能搞定。后来询问了一些群友,在群友的推荐下,使用了QT这个...
  • QtitanNavigation:QtitanNavigationDesignUI 组件是一组 GUI 控件,它实现了菜单、导航框、命令栏等导航界面,并让您以更少的滚动和点击次数有效地查看所有实体(工作区、网格或其他项目)。 QtitanDocking:允许...
  • C++图形化编程(时钟案例)

    千次阅读 2022-04-20 08:25:06
    个性时钟,图形化中阶编程,可以练手的小项目
  • c++图形界面

    2013-12-09 12:33:47
    c++图形界面,实验六,对窗体应用程序的应用,非常好的代码,敬请期待
  • 怎么添加按钮的事件呢?刚接触c++图形化界面还不是了解 怎么添加按钮的事件呢?刚接触c++图形化界面还不是了解 怎么添加按钮的事件呢?刚接触c++图形化界面还不是了解
  • C++语言 编写的带图形界面的计算器,能实现加减乘除和清零功能。代码清晰,适合初学者学习。
  • EasyX https://easyx.cn/
  • C++的图像界面学习(MFC) 简单入门

    万次阅读 多人点赞 2019-02-20 18:56:46
    stdafx: 是每个vs里都会生成的东西,作用是把C++工程中使用的MFC头文件预先编译,以后该工程编译时,直接使用预编译的结果,这样可以加快编译速度。 MFC5DIg:写的控件编程代码都会在这里 资源文件 :里面有...
  • c++ 图形界面计算器使用vistualc++6.0打开 可计算出矩阵的基础解系 矩阵需要按格式输入
  • 浅谈图形界面引擎开发 - 如何用 C++ 从零编写 GUI

    万次阅读 多人点赞 2017-03-24 10:43:10
    本人在知乎上关于 如何用 C++ 从零编写 GUI? 问题的回答,算是比较粗浅但全面的讲解了GUI引擎的一些开发心得
  • 使用mfc实现的图形化界面显示的avl树操作程序,可以进行新建,删除,查找等操作。
  • TCP文件传输的客户端和服务器,进行TCP通信的文件传输。利用Qt工具以及C++语言编写的图像文件传输界面软件,此程序编写环境为win10,Qt4.3社区版。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,226
精华内容 39,290
关键字:

c++图形化界面

c++ 订阅