程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> [C語言]進階|圖形庫,進階圖形

[C語言]進階|圖形庫,進階圖形

編輯:關於C語言

[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 0;
}

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

@黑眼詩人 <www.farwish.com>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved