CN110737433B - 一种c语言程序的图形显示方法及装置 - Google Patents

一种c语言程序的图形显示方法及装置 Download PDF

Info

Publication number
CN110737433B
CN110737433B CN201910982901.8A CN201910982901A CN110737433B CN 110737433 B CN110737433 B CN 110737433B CN 201910982901 A CN201910982901 A CN 201910982901A CN 110737433 B CN110737433 B CN 110737433B
Authority
CN
China
Prior art keywords
graphics
graphic
program
drawn
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910982901.8A
Other languages
English (en)
Other versions
CN110737433A (zh
Inventor
李富科
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN201910982901.8A priority Critical patent/CN110737433B/zh
Publication of CN110737433A publication Critical patent/CN110737433A/zh
Application granted granted Critical
Publication of CN110737433B publication Critical patent/CN110737433B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Image Generation (AREA)

Abstract

本申请公开了一种C语言程序的图形显示方法及装置。其中,该方法包括:图形生成程序在内存中申请与待绘制的图形的大小对应的存储空间,并在存储空间中写入待绘制的图形的各个像素的颜色信息,其中,图形生成程序利用C语言编写;图形生成程序将待绘制的图形的属性信息以及存储空间中写入的各个像素的颜色信息传输给图形绘制程序,其中,属性信息包括待绘制的图形的大小信息及颜色深度信息;图形绘制程序接收属性信息和各个像素的颜色信息,按照属性信息和各个像素的颜色信息,将对应的图形显示在图形绘制程序的图形界面上。通过本申请,降低了C语言初学者进行图形界面程序编写的难度。

Description

一种C语言程序的图形显示方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种C语言程序的图形显示方法及装置。
背景技术
C语言是一种基础的、历史悠久的计算机编程语言,具有广泛的应用场景。人们在使用C语言编写程序时,经常为了实现某些相同或相似的功能,而编写出的相同或相似代码。人们将所述代码,打包成一个软件包,专供开发者使用,该软件包称之为库(library)。其中,对于有一些特别常用的功能,如英文字符的大小写转换,英文字符串的查找、拼接,基本的输入输出,文件的读写等功能,美国国家标准学会(American National StandardsInstitute,ANSI)将这些特别常用的功能进行标准化,从而形成了ANSI C语言标准库(TheANSI Standard Library,ANSI libc)。通过使用ANSI libc中的printf()函数,C语言程序可以实现文本界面的格式化输出功能。
但C语言本身及ANSI libc均缺少对图形界面的支持,因此,使用C语言及ANSIlibc(或其它版本libc、例如,GNU libc)在各个平台上,均无法做出图形界面程序。目前,如果使用C语言做出图形界面的程序,主要有以下两种实现方式:第一种方式是使用第三方的图形库,例如,图形用户界面工具包(GIMP Toolkit,GTK)、开放图形库(Open GraphicsLibrary,OpenGL)、QT(跨平台C++图形用户界面应用程序开发框架)等;第二种方式是使用操作系统官方图形库,例如,windows上的MFC/DirectX,Mac OS上的Cocoa/Metal。无论采用上述哪种方式,开发者均需要掌握这些图形库的使用方法,学习成本较大。并且,掌握这些图形库所需的某些必要知识已超出了C语言的范畴,这使得C语言的初学者做出图形界面程序更加困难。
因此,在未使用第三方的图形库或操作系统提供的图形库的情况下,如何使得C语言程序可以显示出图形,是目前所需要解决的一个技术问题。
发明内容
本申请实施例提供一种C语言程序的图形显示方案,用以至少解决上述技术问题。
本申请实施例提供一种C语言程序的图形显示方法,包括:图形生成程序在内存中申请与待绘制的图形的大小对应的存储空间,并在所述存储空间中写入待绘制的图形的各个像素的颜色信息,其中,所述图形生成程序利用C语言编写;所述图形生成程序将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给图形绘制程序,其中,所述属性信息包括所述待绘制的图形的大小信息及颜色深度信息;所述图形绘制程序接收所述属性信息和所述各个像素的颜色信息,按照所述属性信息和所述各个像素的颜色信息,将对应的图形显示在所述图形绘制程序的图形界面上。
可选地,所述图形生成程序将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给图形绘制程序,包括:所述图形生成程序通过进程间通信或网络通信的方式,将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给所述图形绘制程序。
可选地,所述图形绘制程序将对应的图形显示在所述图形绘制程序的图形界面上,包括:所述图形绘制程序按照其操作系统的发行方提供的图形应用程序编程接口API,在所述图形绘制程序所处的设备的内存中对接收到的所述属性信息和所述各个像素的颜色信息进行重组,得到绘制所述待绘制的图形所需的参数;所述图形绘制程序将得到的所述参数作为所述操作系统的发行方提供的图形API的入参,调用所述操作系统的发行方提供的图形API,将所述图形显示在所述图形绘制程序的图形界面上。
可选地,所述操作系统包括:微软Windows操作系统、苹果Mac OS操作系统、Linux操作系统、苹果iOS操作系统、苹果iPadOS操作系统、或安卓Android操作系统。
可选地,所述图形绘制程序将对应的图形显示在所述图形绘制程序的图形界面上,包括:所述图形绘制程序按照除所述图形绘制程序当前所处的操作系统的发行方以外的第三方提供的图形API,在所述图形绘制程序所处的设备的内存中对接收到的所述属性信息和所述各个像素的颜色信息进行重组,得到绘制所述待绘制的图形所需的参数;所述图形绘制程序将得到的所述参数作为所述第三方提供的图形API的入参,调用所述第三方提供的图形API,将所述图形显示在所述图形绘制程序的图形界面上。
可选地,将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给所述图形绘制程序,包括:将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息进行编码和/或压缩后传输给所述图形绘制程序;在所述图形绘制程序接收到所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息之后,将对应的图形显示在所述图形绘制程序的图形界面上之前,所述方法还包括:所述图形绘制程序对接收到的所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息进行解码和/或解压缩。
本申请实施例还提供一种C语言程序的图形显示装置,包括:图形生成模块,用于在内存中申请与待绘制的图形的大小对应的存储空间,并在所述存储空间中写入待绘制的图形的各个像素的颜色信息,以及将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给图形绘制模块,其中,所述图形生成模块的功能通过标准C语言编写的程序实现,所述属性信息包括所述待绘制的图形的大小信息及颜色深度信息;所述图形绘制模块,用于接收所述属性信息和所述各个像素的颜色信息,按照所述属性信息和所述各个像素的颜色信息,将对应的图形显示在所述图形绘制模块的图形界面上。
可选地,所述图形生成模块通过进程间通信或网络通信的方式将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给所述图形绘制模块。
可选地,所述图形绘制模块包括:第一重组模块,用于按照当前所处的操作系统的发行方提供的图形应用程序编程接口API,在所述图形绘制模块所处的设备的内存中对接收到的所述属性信息和所述各个像素的颜色信息进行重组,得到绘制所述待绘制的图形所需的参数;第一调用模块,用于将得到的所述参数作为所述操作系统的发行方提供的图形API的入参,调用所述操作系统的发行方提供的图形API,将所述图形显示在所述图形绘制模块的图形界面上。
可选地,所述图形绘制模块包括:第二重组模块,用于按照除当前所处的操作系统的发行方以外第三方提供的图形API,在所述图形绘制模块所处的设备的内存中对接收到的所述属性信息和所述各个像素的颜色信息进行重组,得到绘制所述待绘制的图形所需的参数;第二调用模块,用于将得到的所述参数作为所述第三方提供的图形API的入参,调用所述第三方提供的图形API,将所述图形显示在所述图形绘制模块的图形界面上。
可选地,所述图形生成模块包括:编码和/或压缩模块,用于在将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给所述图形绘制模块之前,将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息进行编码和/或压缩;所述图形绘制模块包括:解码和/或解压缩模块,用于对接收到的所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息进行解码和/或解压缩。
在本申请实施例提供的技术方案中,利用标准C语言编写的图形生成程序在内存中申请与待绘制的图形的大小对应的存储空间,并在所述存储空间中写入待绘制的图形的各个像素的颜色信息,然后将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给图形绘制程序,由图形绘制程序将待绘制的图形在屏幕上显示出来,因此,编写图形生成程序的程序编写者仅需要掌握标准C语言,以及C语言标准库和进程间通信功能库,即可编写出可以显示出图形的C语言程序,降低了C语言初学者进行图形界面程序编写的难度。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例1提供的一种C语言程序的图形显示方法的流程图;
图2为本申请实施例1中的一种图形显示的示例图;
图3为本申请实施例2提供的一种C语言程序的图形显示装置的结构示意图;
图4为本申请实施例2中C语言程序的图形显示装置应用的一种可选系统的架构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
本实施例提供了一种C语言程序的图形显示方法。
图1为本实施例中的一种C语言程序的图形显示方法的流程图,如图1所示,该方法主要包括以下步骤S102-步骤S106。
步骤S102,利用C语言编写的图形生成程序在内存中申请与待绘制的图形的大小对应的存储空间,并在该存储空间中写入待绘制的图形的各个像素的颜色信息。
在本实施例中,使用者在编写图形生成程序的过程中,虽然使用者想显示图形,但并不需要使用第三方图形API或操作系统的图形API,只需要利用标准的C语言,调用C语言标准库以及进程间通信功能库完成图形生成程序的功能。
在具体应用中,使用者可以使用C语言编程工具,进行图形生成程序的源代码的编写、调试以及编译。在编译后,将产生一个可执行文件,运行该可执行文件将执行图形生成程序的程序控制流程。
在本实施例中,待绘制的图形可以为位图,位图是由一个一个具有颜色属性的点(即像素)组成的,例如,1080p电视机屏幕是由1920*1080个像素构成的,在本实施例中,像素的颜色属性可以用内存的2个Byte(16bit)或3个Byte(24个bit)或4个Byte(32bit)来存储,每个像素的颜色信息存储容量越大,图像颜色越丰富。例如,32bit的内存存储颜色信息比24bit的丰富,而24bit的比16bit的丰富。每个像素的颜色信息存储容量,可以称为图像的颜色深度。
在本实施例中,使用者可以通过图形生成程序绘制一个位图,在编写图形生成程序的源代码时,使用者可以使用C语言编写一段设定一个位图的大小与颜色深度的代码,例如,800*600*24bit,以及在内存中申请800*600*3Byte(24bit)=1,440,000Byte的空间的代码,并通过编写代码对这部分内存进行操作,以对每个像素赋予颜色信息。在图形生成程序运行时,执行相应的控制流程,在内存中申请存储空间,该存储空间的大小与待绘制的图形的大小和颜色深度对应。例如,例如,待绘制的图形的大小和颜色深度为800*600*24bit,则申请的存储空间为1,440,000Byte,并在这部分存储空间中对待绘制的图形的各个像素赋予的颜色信息,即将待绘制的图形的各个像素的颜色信息写入申请的存储空间中,这部分内存信息即为待绘制的图形的图形信息。
由此可见,在本实施例中,图形生成程序只需要在内存中申请存储空间,在这部分存储空间中对待绘制的图形的各个像素的颜色进行赋值,只需要调用的C语言标准库即可以完成,因此,编程人程并不需要掌握复杂的第三方的图形库或操作系统发行方提供的图形库的使用方法,降低了对编程人员的要求。
步骤S104,图形生成程序将待绘制的图形的属性信息以及上述存储空间中写入的各个像素的颜色信息传输给图形绘制程序,其中,该属性信息包括待绘制的图形的大小信息和颜色深度信息。
在本实施例中,图形生成程序将待绘制的图形的属性信息及写入上述存储空间的各个像素的颜色信息发送给图形绘制程序,图形绘制程序根据这些信息可以恢复出要绘制的图形的图形数据。
在本实施例的一个可选实施方式中,图形生成程序与图形绘制程序可以运行在同一设备上。在这种情况下,图形生成程序可以通过进程间通信将待绘制的图形的属性信息及写入上述存储空间的各个像素的颜色信息传输给图形绘制程序。在具体应用中,图形生成程序可以采用现有的网络或进程间通信手段,例如,socket(网络)、pipe(管道)、sharedmemory(共享内存)、message queue(消息队例)、file(文件)等,将待绘制的图形的属性信息及写入上述存储空间的各个像素的颜色信息传输给图形绘制程序。通过该可选实施方式,图形生成程序与图形绘制程序可以运行在同一个设备上,方便用户观察。
在上述可选实施方式中,图形生成程序的编程人员只需要调用C语言的进程间通信功能库即可以完成与图形绘制程序之间的通信,不需要编程人员掌握更为复杂的第三方提供的库的功能。
在本实施例的另一个可选实施方式中,图形生成程序与图形绘制程序可以运行在不同的设备上,在这种情况下,图形生成程序可以通过网络通信将待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给图形绘制程序。通过该可选实施方式,图形生成程序与图形绘制程序可以运行在不同的设备上,多个图形生成程序可以共用一个设备上的图形绘制程序,提高了图形绘制程序的利用率。
步骤S106,图形绘制程序接收上述属性信息和上述各个像素的颜色信息,按照该属性信息和接收到的各个像素的颜色信息,将对应的图形显示在图形绘制程序的图形界面上。
在本实施例中,图形绘制程序根据属性信息可以确定图形的大小和颜色深度,从而可以把接收到的各个像素的颜色信息恢复为图形数据,进而将对应的图形显示在图形绘制程序的图形界面上。
在本实施例,对于复杂的图形,图形绘制程序在将图形显示在图形绘制程序的图形界面上时,可以调用图形API实现。例如,在本实施例的一个可选实施方式中,图形绘制程序可以调用当前所处的操作系统的发行方提供的图形API来实现。在该可选实施方式中,图形绘制程序在接收到上述属性信息和各个像素的颜色信息之后,先按照操作系统的发行方提供的图形API,在图形绘制程序所处的设备的内存中进行重组,得到绘制图形所需的参数,然后将该参数作为调用操作系统发行方提供的图形API的入参,调用图形API,将图形显示在图形绘制程序的图形界面上。
在上述可选实施方式中,图形绘制程序当前所处的操作系统可以为任意含有图形API的操作系统包括但不限于:苹果Mac OS操作系统、微软windows(视窗)操作系统、苹果iOS操作系统(即苹果公司的移动操作系统)、苹果iPadOS操作系统(即苹果公司的平板操作系统)或Android(安卓)等操作系统,也可以为操作系统内核虽未提供图形API,但其发行方或第三方为该操作系统提供了对应的图形API的操作系统,如Linux系统。
或者,在本实施例的另一个可选实施方式中,图形绘制程序也可以调用除操作系统的发行方之外的第三方提供的图形API将图形显示在图形绘制程序的图形界面上。在该可选实施方式中,图形绘制程序在接收到上述属性信息和各个像素的颜色信息之后,先按照第三方提供的图形API,在图形绘制程序所处的设备的内存中进行重组,得到绘制图形所需的参数,然后将该参数作为调用第三方提供的图形API的入参,调用第三方提供的图形API,将图形显示在图形绘制程序的图形界面上。
在本实施例的上述可选实施方式中,图形绘制程序可以通过OpenGL、DirectX、MFC、Cocoa、Metal等任意一个图形API将图形显示出来。
在本实施例的一个可选实施方式中,为了使得图形生成程序与图形绘制程序之间可以互通数据和/或减少传输的数据量,在图形生成程序向图形绘制程序传输图形的属性信息及各个像素的颜色信息时,可以先进行编码和/压缩再传输。因此,在该可选实施方式中,将待绘制的图形的属性信息以及存储空间中写入的各个像素的颜色信息传输给图形绘制程序可以包括:将所述待绘制的图形的属性信息以及存储空间中写入的各个像素的颜色信息进行编码和/或压缩后传输给图形绘制程序;对应的,在图形绘制程序接收到待绘制的图形的属性信息以及存储空间中写入的各个像素的颜色信息之后,将对应的图形显示在图形绘制程序的图形界面上之前,该方法还可以包括:图形绘制程序对接收到的待绘制的图形的属性信息以及存储空间中写入的各个像素的颜色信息进行解码和/或解压缩。通过该可选实施方式,可以使得图形生成程序与图形绘制程序之间可以进行信息互通和/或减少图形生成程序与图形绘制程序之间传输的数据量,提高传输效率。
下面以绘制的图形为在白色背景中间区域绘制一个黑色方块为例,对本实施例的提供的技术方案进行说明。
首先,编程人员通过C语言编程工具,编写图形生成程序的程序代码为:
Figure BDA0002235781610000091
Figure BDA0002235781610000101
Figure BDA0002235781610000111
然后编译、运行上述程序代码,图形生成程序从内存中申请存储空间,并在该部分存储空间中写入600*800像素中每个像素的颜色信息。
然后,图形生成程序将待绘制的图形的属性信息及上述存储空间中写入的各个像素的颜色信息进行编码后发送给图形绘制程序。图形绘制程序对接收到的数据进行解码,得到待绘制的图形的属性信息及该图形各个像素的颜色信息,然后图形绘制程序调用图形API,将图形显示在图形绘制程序的图形界面上,如图2所示。
需要说明的是,虽然上述实施例中以绘制简单的带颜色的方块为例进行描述,但并不限于此。本实施例提供的C语言程序的图形显示方法,可以绘制各种形状及颜色的图形或图像,例如,可以绘制小汽车、飞机等,并且,可以通过缩短各个画面之间的显示时间间隔,绘制出动态界面,进而绘制出动态的游戏界面。
通过本实施例提供的C语言程序的图形显示方法,利用标准C语言编写的图形生成程序在内存中申请与待绘制的图形的大小对应的存储空间,并在所述存储空间中写入待绘制的图形的各个像素的颜色信息,然后将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给图形绘制程序,由图形绘制程序将待绘制的图形在屏幕上显示出来,因此,编写图形生成程序的使用者仅需要掌握标准C语言,以及C语言标准库和进程间通信功能库,即可编写出可以显示出图形的C语言程序,降低了C语言初学者进行图形生成程序编写的难度,提高了初学者的成就感,提高了编程初学者尤其是青少年初学者的热情,使初学者只需要掌握非常简单的几个接口,使得初学者能在非常短的时间内拥有利用C语言进行计算机图形编程的能力。
实施例2
本实施例提供了一种C语言程序的图形显示装置,该装置可以用于实现上述实施例一所提供的方法。
图3为本实施例提供的一种C语言程序的图形显示装置的结构示意图,如图3所示,该装置主要包括:图形生成模块301和图形绘制模块303。
下面主要对本实施例提供的C语言程序的图形显示装置的各个模块的功能进行描述,其它相关事宜可以参见实施例一的描述,在此不再赘述。
在本实施例中,图形生成模块301,用于在内存中申请与待绘制的图形的大小对应的存储空间,并在存储空间中写入待绘制的图形的各个像素的颜色信息,以及将待绘制的图形的属性信息以及存储空间中写入的各个像素的颜色信息传输给图形绘制模块303,其中,图形生成模块301的功能通过C语言编写实现,属性信息包括待绘制的图形的大小信息及颜色深度信息;图形绘制模块303,用于接收属性信息和各个像素的颜色信息,按照属性信息和各个像素的颜色信息,将对应的图形显示在图形绘制模块303的图形界面上。
在本实施例的可选实施方式中,图形生成模块301通过进程间通信或网络通信的方式将待绘制的图形的属性信息以及存储空间中写入的各个像素的颜色信息传输给图形绘制模块303。即图形生成模块301和图形绘制模块303可以位于同一设备上,也可以位于不同设备上。
在本实施例中,图形生成模块301在内存中申请与待绘制的图形的大小对应的存储空间,并在存储空间中写入待绘制的图形的各个像素的颜色信息,然后将待绘制的图形的属性信息以及存储空间中写入的各个像素的颜色信息传输给图形绘制模块303,由图形绘制模块303将待绘制的图形在屏幕上显示出来,因此,图形生成模块的程序编写者仅需要掌握标准C语言,以及C语言标准库和进程间通信功能库,即可编写出可以显示出图形的C语言程序,降低了初学者进行图形界面程序编写的难度。
在本实施例的一个可选实施方式中,图形绘制模块303可以包括:第一重组模块,用于按照当前所处的操作系统的发行方提供的图形应用程序编程接口API,在图形绘制模块303所处的设备的内存中对接收到的属性信息和各个像素的颜色信息进行重组,得到绘制待绘制的图形所需的参数;第一调用模块,用于将得到的参数作为发行方提供的图形API的入参,调用发行方提供的图形API,将图形显示在图形绘制模块303的图形界面上。通过该可选实施方式中,图形绘制模块303可以利用其操作系统提供的图形API将图形显示出来。
在本实施例的一个可选实施方式,图形绘制模块303可以包括:第二重组模块,用于按照除当前所处的操作系统的发行方以外第三方提供的图形API,在图形绘制模块303所处的设备的内存中对接收到的属性信息和各个像素的颜色信息进行重组,得到绘制待绘制的图形所需的参数;第二调用模块,用于将得到的参数作为第三方提供的图形API的入参,调用第三方提供的图形API,将图形显示在图形绘制模块的图形界面上。通过该可选实施方式中,图形绘制模块303可以利用第三方提供的图形API将图形显示出来。
在本实施例的一个可选实施方式中,为了使图形生成模块301与图形绘制模块303之间可以互通数据和/或减少传输的数据量,图形生成模块301向图形绘制模块303传输各个像素的颜色信息时,可以将各个像素的颜色信息进行编码和/或压缩后传输。因此,在该可选实施方式中,图形生成模块301可以包括编码和/或压缩模块,用于在将待绘制的图形的属性信息以及存储空间中写入的各个像素的颜色信息传输给图形绘制模块303之前,将待绘制的图形的属性信息以及存储空间中写入的各个像素的颜色信息进行编码和/或压缩;图形绘制模块303可以包括解码和/或解压缩模块,用于对接收到的待绘制的图形的属性信息以及存储空间中写入的各个像素的颜色信息进行解码和/或解压缩。通过该可选实施方式,可以使得图形生成模块301与图形绘制模块303之间可以进行信息互通和/或减少图形生成模块301与图形绘制模块303之间传输的数据量,提高传输效率。
图4为本实施例提供的C语言程序的图形显示装置应用的一种可选系统的架构示意图,如图4所示,在该可选实施方式,图形生成模块41向图形绘制模块42提供图形信息(包括图形的属性信息和与该图形对应的内存的存储空间中存储的各个像素的颜色信息),图形绘制模块42根据接收到的图形信息,调用操作系统的发行方提供的图形库43或第三方提供的图形库44,图形库43或图形库44调用驱动模块45将图形显示到计算机硬件屏幕46。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (7)

1.一种C语言程序的图形显示方法,其特征在于,包括:
图形生成程序在内存中申请与待绘制的图形的大小对应的存储空间,并在所述存储空间中写入待绘制的图形的各个像素的颜色信息,其中,所述图形生成程序利用C语言编写;
所述图形生成程序将所述待绘制的图形的属性信息以及所述存储空间中写入的所述各个像素的颜色信息传输给图形绘制程序,其中,所述属性信息包括所述待绘制的图形的大小信息及颜色深度信息;
所述图形绘制程序接收所述属性信息和所述各个像素的颜色信息,按照所述属性信息和所述各个像素的颜色信息,将对应的图形显示在所述图形绘制程序的图形界面上;
其中,所述图形绘制程序将对应的图形显示在所述图形绘制程序的图形界面上,包括:所述图形绘制程序按照其所处操作系统的发行方提供的图形应用程序编程接口API,在所述图形绘制程序所处的设备的内存中对接收到的所述属性信息和所述各个像素的颜色信息进行重组,得到绘制所述待绘制的图形所需的参数;
所述图形绘制程序将得到的所述参数作为所述操作系统的发行方提供的图形API的入参,调用所述操作系统的发行方提供的图形API,将所述图形显示在所述图形绘制程序的图形界面上;
或者,所述图形绘制程序将对应的图形显示在所述图形绘制程序的图形界面上,包括:所述图形绘制程序按照除所述图形绘制程序当前所处的操作系统的发行方以外的第三方提供的图形API,在所述图形绘制程序所处的设备的内存中对接收到的所述属性信息和所述各个像素的颜色信息进行重组,得到绘制所述待绘制的图形所需的参数;
所述图形绘制程序将得到的所述参数作为所述第三方提供的图形API的入参,调用所述第三方提供的图形API,将所述图形显示在所述图形绘制程序的图形界面上。
2.根据权利要求1所述的方法,其特征在于,所述图形生成程序将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给图形绘制程序,包括:
所述图形生成程序通过进程间通信或网络通信的方式,将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给所述图形绘制程序。
3.根据权利要求1所述的方法,其特征在于,所述操作系统包括:微软视窗Windows操作系统、苹果Mac OS操作系统、Linux操作系统、苹果iOS系统、苹果iPadOS系统、或安卓Android操作系统。
4.根据权利要求1或2所述的方法,其特征在于,
将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给所述图形绘制程序,包括:将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息进行编码和/或压缩后传输给所述图形绘制程序;
在所述图形绘制程序接收到所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息之后,将对应的图形显示在所述图形绘制程序的图形界面上之前,所述方法还包括:所述图形绘制程序对接收到的所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息进行解码和/或解压缩。
5.一种C语言程序的图形显示装置,其特征在于,包括:
图形生成模块,用于在内存中申请与待绘制的图形的大小对应的存储空间,并在所述存储空间中写入待绘制的图形的各个像素的颜色信息,以及将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给图形绘制模块,其中,所述图形生成模块的功能通过C语言编写的程序实现,所述属性信息包括所述待绘制的图形的大小信息及颜色深度信息;
所述图形绘制模块,用于接收所述属性信息和所述各个像素的颜色信息,按照所述属性信息和所述各个像素的颜色信息,将对应的图形显示在所述图形绘制模块的图形界面上;
其中,所述图形绘制模块包括:第一重组模块,用于按照当前所处的操作系统的发行方提供的图形应用程序编程接口API,在所述图形绘制模块所处的设备的内存中对接收到的所述属性信息和所述各个像素的颜色信息进行重组,得到绘制所述待绘制的图形所需的参数;
第一调用模块,用于将得到的所述参数作为所述操作系统的发行方提供的图形API的入参,调用所述操作系统的发行方提供的图形API,将所述图形显示在所述图形绘制模块的图形界面上;
或者,所述图形绘制模块包括:第二重组模块,用于按照除当前所处的操作系统的发行方以外第三方提供的图形API,在所述图形绘制模块所处的设备的内存中对接收到的所述属性信息和所述各个像素的颜色信息进行重组,得到绘制所述待绘制的图形所需的参数;
第二调用模块,用于将得到的所述参数作为所述第三方提供的图形API的入参,调用所述第三方提供的图形API,将所述图形显示在所述图形绘制模块的图形界面上。
6.根据权利要求5所述的装置,其特征在于,所述图形生成模块通过进程间通信或网络通信的方式将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给所述图形绘制模块。
7.根据权利要求5或6所述的装置,其特征在于,
所述图形生成模块包括:编码和/或压缩模块,用于在将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息传输给所述图形绘制模块之前,将所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息进行编码和/或压缩;
所述图形绘制模块包括:解码和/或解压缩模块,用于对接收到的所述待绘制的图形的属性信息以及所述存储空间中写入的各个像素的颜色信息进行解码和/或解压缩。
CN201910982901.8A 2019-10-16 2019-10-16 一种c语言程序的图形显示方法及装置 Active CN110737433B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910982901.8A CN110737433B (zh) 2019-10-16 2019-10-16 一种c语言程序的图形显示方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910982901.8A CN110737433B (zh) 2019-10-16 2019-10-16 一种c语言程序的图形显示方法及装置

Publications (2)

Publication Number Publication Date
CN110737433A CN110737433A (zh) 2020-01-31
CN110737433B true CN110737433B (zh) 2023-04-25

Family

ID=69269067

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910982901.8A Active CN110737433B (zh) 2019-10-16 2019-10-16 一种c语言程序的图形显示方法及装置

Country Status (1)

Country Link
CN (1) CN110737433B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108509240A (zh) * 2018-03-09 2018-09-07 广东欧珀移动通信有限公司 图片绘制方法及相关产品
CN109919827A (zh) * 2019-02-22 2019-06-21 搜游网络科技(北京)有限公司 一种图形绘制方法、装置及计算机可读介质、设备
CN110286992A (zh) * 2019-07-02 2019-09-27 中国工商银行股份有限公司 界面图形重绘的方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542160B1 (en) * 1999-06-18 2003-04-01 Phoenix Technologies Ltd. Re-generating a displayed image
JP4484770B2 (ja) * 2005-06-09 2010-06-16 キヤノン株式会社 画像処理装置およびその方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108509240A (zh) * 2018-03-09 2018-09-07 广东欧珀移动通信有限公司 图片绘制方法及相关产品
CN109919827A (zh) * 2019-02-22 2019-06-21 搜游网络科技(北京)有限公司 一种图形绘制方法、装置及计算机可读介质、设备
CN110286992A (zh) * 2019-07-02 2019-09-27 中国工商银行股份有限公司 界面图形重绘的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种基于BMP图片的显示方法;韩英;《仪表技术》(第02期);第61-62页 *

Also Published As

Publication number Publication date
CN110737433A (zh) 2020-01-31

Similar Documents

Publication Publication Date Title
EP3138006B1 (en) System and method for unified application programming interface and model
CN103617027B (zh) 基于安卓系统的图像渲染引擎构建方法及系统
CN113515396B (zh) 图形渲染方法、装置、电子设备与存储介质
CN111354063B (zh) 一种三维元素渲染方法、桌面云服务端及桌面云系统
CN110675465B (zh) 用于生成图像的方法和装置
CN110555900B (zh) 渲染指令的处理方法及装置、存储介质、电子设备
CN113342703B (zh) 一种渲染效果实时调试方法、装置、开发设备及存储介质
CN116185743B (zh) OpenGL接口的双显卡对比调试方法、装置及介质
CN114972607A (zh) 加速图像显示的数据传输方法、装置及介质
CN113778604A (zh) 一种操作界面的展示方法、装置、电子设备和存储介质
CN115809106A (zh) 云桌面系统与云桌面显示方法、终端设备及存储介质
CN108364335A (zh) 一种动画绘制方法及装置
CN109634611B (zh) 基于OpenGL的移动端三维模型ply文件解析与展示方法
CN110865863A (zh) 快应用的界面显示方法、装置及存储介质
CN117170883B (zh) 渲染显示的方法、装置、设备及存储介质
CN110737433B (zh) 一种c语言程序的图形显示方法及装置
CN104965709A (zh) 一种基于Android内核的动态生成位图图像的信息显示方法
US8203567B2 (en) Graphics processing method and apparatus implementing window system
CN115988265A (zh) 一种显示画面的渲染方法、装置和终端设备
US6611274B1 (en) System method, and computer program product for compositing true colors and intensity-maped colors into a frame buffer
CN111240675B (zh) 一种基于Canvas API的多端绘图方法
CN115904563A (zh) 应用程序启动中的数据处理方法、装置和存储介质
CN116010736A (zh) 矢量图标的处理方法、装置、设备以及存储介质
CN115391692A (zh) 视频处理方法和装置
CN108572593A (zh) 跨平台卷积神经网络控制系统及方法、信息数据处理终端

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40020051

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant