[C语言]进阶|图形库
----------------------------------------------------------------------
// main.c
// Created by weichen on 15/7/7.
// Copyright (c) 2015年 weichen. All rights reserved. #include <stdio.h> int main(int argc, const char * argv[]) {
/*
Windows API: 从第一个32位的Windows开始就出现了,就叫做Win32API.
它是一个纯C的函数库,就和C标准库一样,使你可以写Windows应用程序
过去很多Windows程序是用这个方式做出来的 main(): main()成为C语言的入口函数其实和C语言本身无关,你的代码是被一小段叫做启动代码的程序所调用的,它需要一个叫做main的地方
操作系统把你的可执行程序装载到内存里,启动运行,然后调用你的main函数 WinMain(): As main() is the entry function of an ordinary C program, WinMain() is the one Win32API program.
Windows applications have a different "startup" code that needs a function "WinMain()". #include <windows.h>
int WINAPI WinMain(
HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) //参数
{
MessageBox(NULL, "Goodbye, cruel world!", "Note", MB_OK);
return 0;
} // 创建ACLlib程序 #include "acllib.h"
#include <stdio.h> int Setup()
{
initConsole(); printf("输入宽度:"); int width;
scanf("%d", &width);
initWindow("test", 100, 100, width, width); beginPaint();
line(20, 20, width - 20, width - 20);
putPixel(100,150,RGB(255,255,0));
endPaint(); return 0; // 基本绘图函数 创建图形窗口
void initWindow(const char title[], int left, int top, int width, int height); 坐标系
在windows/unix中,坐标是以像素点得数字来定义的。对于你创建出来的窗口,左上角是(0,0), x轴自左向右增长,而y轴自上向下增长 终端窗口
如果需要用scanf和printf, 则需要首先initConsole();
然后就可以在那个窗口上使用scanf和printf了 启动/结束绘图
void beginPaint();
void endPaint();
任何绘图函数的调用必须在这一对函数调用之间 点
void putPixel(int x, int y, ACL_Color color);
ACL_Color getPixel(int x, int y); 颜色
RGB(r,g,b);
红色 -> RGB(255,0,0);
BLACK,RED,GREEN,BLUE,CYAN,MAGENTA,YELLOW,WHITE 线
void moveTo(int x, int y);
void moveRel(int dx, int dy);
void line(int x0, int y0, int x1, int y1);
void lineTo(int x, int y);
void lineRel(int dx, int dy);
void arc(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nXStartArc, int nYStartArc, int nXEndArc, int nYEndArc); 画笔
void setPenColor(ACL_Color color);
void setPenWidth(int width);
void setPenStyle(ACL_Pen_Style style);
PEN_STYLE_SOLID,
PEN_STYLE_DASH, // ----
PEN_STYLE_DOT, // ....
PEN_STYLE_DASHDOT, // _._._.
PEN_STYLE_DASHDOTDOT, // _.._.._..
PEN_STYLE_NULL, 面
void chrod();
void ellipse();
void pie();
void rectangle();
void roundrect(); 刷子
画笔负责线及面的边缘,刷子负责面的内部
void setBrushColor(ACL_Color color);
void setBrushStyle(ACL_Brush_Style style);
BRUSH_STYLE_SOLID = -1,
BRUSH_STYLE_HORIZONTAL, // ----
BRUSH_STYLE_VERTICAL, // ||||
BRUSH_STYLE_FDIAGONAL, // \\\\
BRUSH_STYLE_BDIAGONAL, // ////
BRUSH_STYLE_CROSS, // ++++
BRUSH_STYLE_DIAGCROSS, // xxxx 文字
void setTextColor(ACL_Color color);
void setTextBkColor(ACL_Color color);
void setTextSize(int size);
void setTextFont(char *pFontName); void paintText(int x, int y, const char *pStr); */
printf("Hello, World!\n");
return ;
}
ACLLib在github上开源,网址是:https://github.com/wengkai/ACLLib
使用Windows下的多种IDE都可以使用ACLLib,包括但不限于DevC++、MS Visual Studio、CodeBlocks等,也可以直接由MinGW编译器以Makefile方式编译。
Link:http://www.cnblogs.com/farwish/p/4628568.html
[C语言]进阶|图形库的更多相关文章
- 【R笔记】R语言进阶之4:数据整形(reshape)
R语言进阶之4:数据整形(reshape) 2013-05-31 10:15 xxx 网易博客 字号:T | T 从不同途径得到的数据的组织方式是多种多样的,很多数据都要经过整理才能进行有效的分析,数 ...
- 《C语言进阶剖析》课程目录
<C语言进阶剖析>学习笔记 本文总结自狄泰软件学院唐佐林老师的<C语言 ...
- 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目入口与路由EP01
书接上回,我们已经安装好Iris框架,并且构建好了Iris项目,同时配置了fresh自动监控项目的实时编译,万事俱备,只欠东风,彩虹女神蓄势待发.现在我们来看看Iris的基础功能,如何编写项目入口文件 ...
- C 语言 进阶
清单狂魔,只挖坑不填坑.. 前言 最近经常被询问 C 语言 相关的问题,突然便也觉得需要思考一下 C 语言的进阶了. 我用 C 语言写过的最大的一个项目,也只是那个贪吃蛇,后来就断断续续地用 Pyth ...
- R语言进阶
一.初学入门:<R in Action><The Art of_R Programming>入门者可首选两本,前者从统计角度入手,分高中低三部分由浅入深的讲解了如何用R来实现统 ...
- 编程C语言进阶篇——自定义数据类型:共同体
什么是"自定义数据类型"?顾名思义,就是用户可以随时在程序中自行定义新的数据类型.自定义数据类型时需要设置数据类型的名称及其成员.数据类型成员各属性的设置方法等同于变量设置时相应属 ...
- 编程C语言进阶篇——自定义数据类型:结构体
一.结构体 定义方法: 结构名 变量名 特点: 两个同类型的结构变量可以相互赋值,但是结构变量之间不能使用"<","=="等运算符,如果使用则需要对运算符 ...
- 苹果新的编程语言 Swift 语言进阶(六)--函数和闭包
一 .函数 1.1. 函数的定义和调用 函数的定义以funckeyword作为前缀,接着是函数名字,接着跟着一个能够带有參数.也能够不带參数的圆括号.接着用-> 指示函数的返回类型. 函数运行体 ...
- 苹果新的编程语言 Swift 语言进阶(五)--控制流
Swift 语言支持C语言全部的控制语句.包含for 和while循环语句,if和switch条件语句,以及break和continue控制语句等. Swift 语言除了支持以上语句,还添加了一个f ...
随机推荐
- 剑指Offer 9. 变态跳台阶 (递归)
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目地址 https://www.nowcoder.com/practice/ ...
- C# 时间控件 竖直进度条 饼图显示 仪表盘 按钮基础控件库
Prepare 本文将使用一个NuGet公开的组件来实现一些特殊的控件显示,方便大家进行快速的开发系统. 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台 ...
- Object.create(null)、Object.create({})、{} 三者创建对象的区别
参考 1.先看看我们经常使用的{}创建的对象是什么样子的: var o = {a:1}; console.log(o) 从上图可以看到,新创建的对象继承了Object自身的方法,如hasOwnProp ...
- CMake 构建项目教程-简介
CMake 构建项目教程-简介 Linux 平台构建项目,选择了CLion作为C++的IDE,而CLion默认就是使用CMake构建项目,所以这里记录了CMake在构建项目过程的一些小知识. 1. 项 ...
- requireJs,AMD,CMD
知识点1:AMD/CMD/CommonJs是JS模块化开发的标准,目前对应的实现是RequireJs/SeaJs/nodeJs. 知识点2:CommonJs主要针对服务端,AMD/CMD主要针对浏 ...
- 关于JVM的一些冷知识
(1) Java加载类的一般顺序: 1.静态属性,静态方法声明,静态块. 2.动态属性,普通方法声明,构造块. 3.构造方法. 当加载一个类时,JVM会根据属性的数据类型第一时间赋默认值(一举生成的) ...
- vim 简单实用
http://www.runoob.com/linux/linux-vim.html 编辑模式 : (同时打开两个文件) vim test.c test1.c -O 同时编辑两个文件 - ...
- 支付宝 生活号 获取 userId 和 生活号支付
第一:申请生活号. 第二:激活开发者 模式 ,并且上创 自己的 公钥 ( 支付宝 demo 里面有 ) 第三: 配置 回调地址 ( 用于前端 调用获取 auth_code 的时候 填写的回调地址,支 ...
- Hadoop与MPP是什么关系?有什么区别和联系?
HADOOP与MPP是什么关系?有什么区别和联系? 适用范围.应用领域分别是什么? 其实MPP架构的关系型数据库与Hadoop的理论基础是极其相似的,都是将运算分布到节点中独立运算后进行结果合并.个人 ...
- 【java】this用法
this代表当前类的引用对象:哪个对象调用方法,该方法内部的this就代表那个对象this关键字主要有两三个应用: (1)this调用本类中的属性,也就是类中的成员变量: class People { ...