C语言与图形
wxWidget主要是用于跨平台的GUI开发,并不是面向图形的。同wxWidget相比,跨平台的GUI开发,我更喜欢Qt,它的文档非常好,代码质量也很高。
无论wxWiget还是Qt,都是基于C++的,不是很适合你。
图形的跨平台库推荐libSDL,可以用它来开发2D游戏,也可以通过它调用OpenGL,开发3D游戏或图形程序。libSDL支持linux,在windows下也可以用msys命令行编译,你喜欢dos开发,就用msys+mingw32+sdl, 没有任何问题。现在新版的SDL2已经以zlib协议发布,可以免费商用,支持闭源静态连接!libSDL是用C写的,不要求C++基础。
如果要做3D开发,可以看OpenGL。建议从nehe的教程开始。你可能会看到,nehe的很多例子是有SDL版本的,这些例子是通过SDL调用OpenGL实现的。这些基于SDL的代码,大多是用于Linux下的,但很容易移植到windows下。
CODE BLOCKS, Dev C++等是图形界面的IDE, 如果你喜欢dos命令行,windows下推荐msys, linux下直接用命令行。如果一定要学CODE BLOCKS, 可以去它的软件官方网站看原版的文档。
你前面提到的硬盘锁,我搜了一下,发现只是一个修改硬盘引导记录的小工具。这个只要搜索一下相关的 windows api, 对磁盘直接读写,替换主引导记录即可。我想替换的代码应该是预先做好的。这个问题很小,如果你关注的是功能而不是操作系统的引导细节并实现自己的引导程序,并不需要系统的看书。可以根据这些建议,搜索例子,尝试自己解决。
⑵ C语言如何做图形界面
/* 以下代码不含丝毫MFC,在Visual C++ 6.0测试通过,能够出现一个正规的Windows窗口 */
#pragma comment(linker,"/SUBSYSTEM:Windows /ENTRY:mainCRTStartup")
#include <windows.h>
/* 使类名成为全局变量 */
TCHAR szClassName[ ] = TEXT("WindowsApp");
/* 这个函数由Windows内部函数DispatchMessage()调用 */
LRESULT CALLBACK WindowProcere (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
switch (message) /* 处理信息 */
{
case WM_DESTROY:
PostQuitMessage (0); /* 发送WM_QUIT到消息队列 */
break;
case WM_PAINT:
hdc = BeginPaint (hWnd, &ps) ;
GetClientRect (hWnd, &rect) ;
DrawText (hdc, TEXT("Hello, Windows NT!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hWnd, &ps) ;
break ;
default: /* 不处理的消息 */
return DefWindowProc (hWnd, message, wParam, lParam);
}
return 0;
}
/* 下面是主函数 */
int main ( void )
{
HINSTANCE hThisInstance = GetMoleHandle(NULL) ;
int nFunsterStil = SW_SHOW ;
HWND hWnd; /* 这是窗口的句柄 */
MSG messages;/* 应用程序的消息保存在这里 */
WNDCLASSEX wincl;/* 窗口类的数据结构 */
/* 窗口结构 */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcere;/* 这个函数由Windows操作系统调用 */
wincl.style = CS_DBLCLKS; /* 获取双击指令 */
wincl.cbSize = sizeof (WNDCLASSEX);
/* 使用默认图标和鼠标指针 */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* 没有菜单 */
wincl.cbClsExtra = 0;/* 窗口类后面没有多余的字节 */
wincl.cbWndExtra = 0;/* 结构或者窗口实例 */
/* 使用窗口的默认颜色作为窗口的背景色 */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
/* 注册窗口类。如果注册失败,那么就退出程序 */
if (!RegisterClassEx (&wincl))
return 0;
/* 窗口类已被注册。创建它的程序 */
hWnd = CreateWindowEx (
0,
szClassName, /* 类名 */
TEXT("Windows App"), /* 窗口标题栏的文字 */
WS_OVERLAPPEDWINDOW, /* 默认窗口 */
CW_USEDEFAULT, /* 窗口左上角的位置 */
CW_USEDEFAULT, /* 窗口右下角的位置 */
544, /* 窗口宽度(以“像素”位单位) */
375, /* 窗口高度(以“像素”位单位) */
HWND_DESKTOP,/* 窗口是桌面的子窗口 */
NULL,/* 该窗口无菜单 */
hThisInstance, /* 程序实例的句柄 */
NULL /* 没有窗口创建的数据 */
);
/* 显示窗口 */
ShowWindow (hWnd, nFunsterStil);
/* 重绘窗口 */
UpdateWindow(hWnd);
/* 运行消息循环。循环到GetMessage()函数返回0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* 把虚拟信息翻译成字符信息 */
TranslateMessage(&messages);
/* 发送信息到窗口过程 */
DispatchMessage(&messages);
}
/* 返回PostQuitMessage()函数的返回值 */
return messages.wParam;
}
⑶ c语言的图形功能强大吗
c语言的比较强大点
jaya比c语言容易点
也是一种汇编语言
现在很多手机上都有jaya平台
⑷ C语言与计算机图形学有什么关系
.. .. 没什么特别关系,计算机图形学,是一门比较深的学科了.里面涉及到很多算法, 比如画线,画圆什么的这两个是很简单的, 还很多很难得算法... 这些算法,就需要编程语言来实现, .所以可以用c实现,其他语言也可以..
⑸ 谁知道C语言怎么画图啊
Turbo C提供了非常丰富的图形函数, 所有图形函数的原型均在graphics. h中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外, 使用图形函数时要确保有显示器图形驱动程序*BGI, 同时将集成开发环境Options/Linker中的Graphics lib选为on, 只有这样才能保证正确使用图形函数。由于种类比较多,所以下面仅列举2个例子,抛砖引玉→
1.点
void far putpixel(int x, int y, int color);
2.线
void far line(int x0, int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直线。
void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。
void far linerel(int dx, int dy); 画一条从现行游标(x, y)到按相对增量确定的点(x+dx, y+dy)的直线。
void far circle(int x, int y, int radius); 以(x, y)为圆心, radius为半径, 画一个圆。
c语言的图形部分是很有意思的,也是c中最精彩的内容之一,希望你能很快享受它的乐趣。
⑹ 用c语言如何实现图形操作
graph的相关库对windows支持不好
我曾经遇到过同样的问题
1年前左右吧,我在学校用win98,tc2.0环境下编的俄罗斯方块,发到网上,n多人说不好用,我就不信,结果拿回家是win xp的环境,确实就不好用了
c语言的很多图形库(包括内联下的鼠标操作 和键盘中断操作) 在win xp下都不好用……
因为好像C语言的编译是这样子的:他是发给一个请求,先格外开一个图形的界面,然后对图形的操作都是在这个界面上的
我曾经遇到的还有一个问题是printf,在图形界面下显示也不好的问题
⑺ 如何用C语言画基本图形
下面举一个用drawpoly()函数画箭头的例子。#include
#include
int main()
{
int gdriver, gmode, i;
int arw[16]={200,102,300,102,300,107,330,<br/>100,300,93,300,98,200,98,200,102};
gdriver=DETECT;
initgraph(&gdriver, &gmode, "c:\\caic\\bgi");
setbkcolor(BLUE);
cleardevice();
setcolor(12); /*设置作图颜色*/
drawpoly(8, arw); /*画一箭头*/
getch();
closegraph();
return 0;
}
设定线型函数
在没有对线的特性进行设定之前,TURBO C 用其默认值,即一点宽的实线,但TURBO C 也提供了可以改变线型的函数。线型包括:宽度和形状。其中宽度只有两种选择:一点宽和三点宽。而线的形状则有五种。下面介绍有关线型的设置函数。
void far setlinestyle(intlinestyle,unsigned upattern,int thickness); 该函数用来设置线的有关信息,其中linestyle是线形状的规定,
见下表:
有关线的形状(linestyle)
━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数 数值 含义
─────────────────────────
SOLID_LINE 0 实线
DOTTED_LINE 1 点线
CENTER_LINE 2 中心线
DASHED_LINE 3 点画线
USERBIT_LINE 4 用户定义线
━━━━━━━━━━━━━━━━━━━━━━━━━
有关线宽(thickness)
thickness是线的宽度,见下表。
━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数 数值 含义
─────────────────────────
NORM_WIDTH 1 一点宽
THIC_WIDTH 3 三点宽
━━━━━━━━━━━━━━━━━━━━━━━━━
对于upattern,只有linestyle选USERBIT_LINE 时才有意义 (选其它线型,uppattern取0即可)。此进uppattern的16位二进制数的每一位代表一个象元,如果那位为1,则该象元打开,否则该象元关闭。 void far getlinesettings(struct linesettingstypefar *lineinfo);该函数将有关线的信息存放到由lineinfo 指向的结构中,表中linesettingstype的结构如下:
struct linesettingstype
{
int linestyle;
unsigned upattern;
int thickness;
}
⑻ c语言的图形函数库有哪些
图形和图像函数包含在graphics.h里面
(一) 像素函数
56. putpiel() 画像素点函数
57. getpixel()返回像素色函数
(二) 直线和线型函数
58. line() 画线函数
59. lineto() 画线函数
60. linerel() 相对画线函数
61. setlinestyle() 设置线型函数
62. getlinesettings() 获取线型设置函数
63. setwritemode() 设置画线模式函数
(三)、多边形函数
64. rectangle() 画矩形函数
65. bar() 画条函数
66. bar3d() 画条块函数
67. drawpoly() 画多边形函数
(四)、 圆、弧和曲线函数
68. getaspectratio()获取纵横比函数
69. circle()画圆函数
70. arc() 画圆弧函数
71. ellipse()画椭圆弧函数
72. fillellipse() 画椭圆区函数
73. pieslice() 画扇区函数
74. sector() 画椭圆扇区函数
75. getarccoords()获取圆弧坐标函数
(五)、 填充函数
76. setfillstyle() 设置填充图样和颜色函数
77. setfillpattern() 设置用户图样函数
78. floodfill() 填充闭域函数
79. fillpoly() 填充多边形函数
80. getfillsettings() 获取填充设置函数
81. getfillpattern() 获取用户图样设置函数
(六)、图像函数
82. imagesize() 图像存储大小函数
83. getimage() 保存图像函数
84. putimage() 输出图像函数
四、图形和图像函数
对许多图形应用程序,直线和曲线是非常有用的。但对有些图形只能靠操作单个像素才能画出。当然如果没有画像素的功能,就无法操作直线和曲线的函数。而且通过大规模使用像素功能,整个图形就可以保存、写、擦除和与屏幕上的原有图形进行叠加。
(一) 像素函数
56. putpixel() 画像素点函数
功能: 函数putpixel() 在图形模式下屏幕上画一个像素点。
用法: 函数调用方式为void putpixel(int x,int y,int color);
说明: 参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值。
此函数相应的头文件是graphics.h
返回值: 无
例: 在屏幕上(6,8)处画一个红色像素点:
putpixel(6,8,RED);
57. getpixel()返回像素色函数
功能: 函数getpixel()返回像素点颜色值。
用法: 该函数调用方式为int getpixel(int x,int y);
说明: 参数x,y为像素点坐标。
函数的返回值可以不反映实际彩色值,这取决于调色板的设置情况(参见setpalette()函数)。
这个函数相应的头文件为graphics.h
返回值: 返回一个像素点色彩值。
例: 把屏幕上(8,6)点的像素颜色值赋给变量color。
color=getpixel(8,6);
⑼ c语言编程如何实现图形化
这要看你所使用的系统平台,图形化编程与系统平台息息相关
对于C语言来说,有许多成熟的框架。比如Windows上可使用Windows的系统API,Linux下有GTK,嵌入式环境下有miniGUI等。
C语言是一门比较特殊的语言,虽然也是高级编程语言的一种,但是为了和其他语言区分开来,部分人也会将C语言称作中级语言,主要是因为C语言不是面向对象的语言,并且有指针这样的利器可以直接对底层以及硬件进行操作。
正是因为C语言不是面向对象的语言,在图形化这样更偏上层的应用中,一般会使用C++替代C语言,这样能极大的降低开发的工作量。
比如,Windows下可使用MFC,WPF也支持C++。Linux下一般用跨平台的QT(可在Windows/MAC等多种平台运行)。嵌入式环境下有嵌入式的QT版本。