當前位置:首頁 » 編程軟體 » 圖形編程教程

圖形編程教程

發布時間: 2023-05-13 05:22:34

❶ 圖形化編程主要學什麼

圖形化編程就是編寫有界面的程序,編程語言是一種被標准化的交流技巧,用來向計算機發出指令,定義計算機程序。

一、圖形化編程

1、使用圖形化編程可以進行良好的頁面布局,在現有的很多Web應用中,其應用程序的頁面布局經常需要使用圖像,這樣能夠讓頁面整體效果更加友好帆培。用戶會對界面友好的應用程序印象深刻從而會進行回訪。

2、在頁面布局中,很多設計人員喜歡使用CSS設計,這樣能夠簡化頁面代碼,將頁面布局代碼和頁面代碼相分離,從而提高了維護性。

二、編程語言

1、允許程序員准確地定義計算機需要使用的數據以及在不同情況下要採取的行動。在不斷的發展和變化過程中,從最初的機器語言到2500多種高級語言,每種語言都有其特定的目的和不同的發展道路。

2、昌敬編程語言不像人類自然語言的發態迅唯展和變化那樣緩慢和持久,它的發展是相當迅速的。這主要是因為計算機硬體、互聯網和IT產業的發展促進了編程語言的發展。

相關信息:

圖形編程不僅僅是一項技術,更是一門藝術。圖形編程的概念很廣,有UI編程,還有游戲編程,游戲編程又分為2D游戲、3D游戲等。

有人覺得游戲不是一門藝術,因為受眾也是參與者;有人覺得游戲是一門藝術,尤其是一門交互藝術。使用圖形化編程可以進行良好的頁面布局,在現有的很多Web應用中,其應用程序的頁面布局經常需要使用圖像,這樣能夠讓頁面整體效果更加友好。

❷ 圖形學編程

在三維繪圖蓬勃發展的過程中,計算機公司推出了大量的三維繪圖軟體包。其中SGI公司推出的OpenGL,作為一個性能優越的圖形應用程序設計界面(API)異軍突起,取得了很大的成就。它以高性能的互動式三維圖形建模能力和易於編程開發,得到了Microsoft、IBM、DEC、Sun、HP等大公司的認同。因此,OpenGL已經成為一種三維圖形開發標准,是從事三維圖形開發工作的必要工具。

1、初始化OpenGL繪圖環境

1.1 定義顏色格式和緩沖模式

OpenGL提供兩種顏色模式:RGB(RGBA)模式和顏色索引模式(調色板)。在RGBA模式下所有顏色的定義用RGB三個值來表示,有時也加上Alpha值(表示透明度)。RGB三個分量值的范圍都在0和1之間,它們在最終顏色中所佔的比例與它們的值成正比。如:(1、1、0)表示黃色,(0、0、1)表示藍色。顏色索引模式下每個象素的顏色是用顏色索引表中的某個顏色索引值表示(類似於從調色板中選取顏色)。由於三維圖形處理中要求顏色靈活,而且在陰影,光照,霧化,融合等效果處理中RGBA的效果要比顏色索引模式好,所以,在編程時大多採用RGBA模式。

OpenGL提供了雙緩存來繪制圖像。即在顯示前台緩存中的圖像同時,後台緩存繪制第二幅圖像。當後台繪制完成後,後台緩存中的圖像就顯示出來,此時原來的前台緩存開始繪制第三幅圖像,如此循環往復,以增加圖像的輸出速度。

設置窗口顯示模式函數:

void auxInitDisplayMode(
AUX_DOUBLE | // 雙緩存方式
AUX_RGBA // RGBA顏色模式
);

1.2 設置光源

OpenGL的光源大體分為三種:環境光(Ambient light),即來自於周圍環境沒有固定方向的光。漫射光(Diffuse light)來自同一個方向,照射到物體表面時在物體的各個方向上均勻發散。鏡面光(Specular light)則是來自於同一方向,也沿同一個方向反射。全局環境光是一種特殊的環境光,它不來自特於某種定光源,通常做為場景的自然光源。

指定光源函數:

void glLightfv(
Glenum light, // 光源號
Glenum pname, // 指明光源類型:
// GL_DIFFUSE 光源為漫射光光源
// GL_AMBIENT 光源為環境光光源
// GL_SPECULAR 光源為鏡面光光源
const Glfloat* params // 指向顏色向量的指針
);

設置全局環境光函數:

void glLightModelfv(
GL_LIGHT_MODEL_ AMBIENT,
const Glfloat* param // param:指向顏色向量的指針
);

起用光源函數:

void glEnable(GL_LIGHTING);
void glEnable(GL_enum cap); // cap:指明光源號

1.3 設置材質

在OpenGL中,用材料對光的三原色(紅綠藍)的反射率大小來定義材料的顏色。與光源相對應,材料的顏色,也分為環境色,漫反射色和鏡面反射色,由此決定該材料對應不同的光呈現出不同的反射率。由於人所看到物體的顏色是光源發出的光經物體反射後進入眼睛的顏色。所以,物體的顏色是光源的環境光,漫反射光和鏡面反射光與材料的環境色,漫反射色和鏡面反射色的綜合。例如:OpenGL的光源色是(LR、LG、LB),材質色為(MR、MG、MB),那麼,在忽略其他反射效果的情況下,最終進入眼睛的顏色是(LR*MR、LG*MG、LB*MB)。

材質定義函數:

void glMaterialfv(
GLenum face, // 指明在設置材質的哪個表面的顏色。
// 可以是GL_FRONT、GL_BACK、GL_FRONT_AND_BACK
GLenum pname, // 與光源的pname參數相似
const float* params // 指向材質的顏色向量
);

1.4 定義投影方式

也即選擇觀察物體的角度和范圍。由於我們是三維繪圖,所以採用不同的視點和觀察范圍,就會產生不同的觀察效果。由於計算機只能顯示二維圖形,所以在表示真實世界中的三維圖形時,需將三維視景轉換成二維視景。這是產生三維立體效果的關鍵。OpenGL提供了兩種將3D圖形轉換成2D圖形的方式。正投影(Orthographic Projection)和透視投影(Perspective Projection)。其中,正投影指投影後物體的大小與視點的遠近無關,通常用於CAD設計;而透視投影則符合人的心理習慣,離視點近的物體大,離視點遠的物體小。此外,在OpenGL中還要定義投影范圍,只有在該范圍中的物體才會被投射到計算機屏幕上,投影范圍外的物體將被裁減掉。

定義投影范圍(不同的投影方式對應不同函數):

void glOrtho(
GLdouble left, GLdouble right,
// (left,bottom,near)及(right,top,far)分別給出正射投
GLdouble bottom, GLdouble top, // 影投影范圍的左下角和右上角的坐標。
GLdouble near,GLdouble far);

2、定義與Windows介面的系統函數

2.1 定義繪圖窗口的位置

// (x,y)給出窗口左上角坐標
// width及heigh給出窗口的寬高
void auxInitPosition(GLint x,GLint y,GLsizei width, GLsizei heigh);

2.2 定義繪圖窗口的標題

// STR表示窗口標題字串
void auxInitWindow(GLbyte* STR);

2.3 定義繪圖窗口改變時的窗口刷新函數

// 當窗口改變形狀時調指定的回調函數
// NAME表示回調函數名稱
void auxReshapeFunc(NAME);

2.4 定義空閑狀態的空閑狀態函數以實現動畫

// 當系統空閑時調用指定的回調函數
// NAME表示回調函數名稱
void auxIdleFunc(NAME);

2.5 定義場景繪制函數(當窗口更新或場景改變時調用)

// 當窗口需要更新或場景變化時調用
// NAME表示回調函數名稱
void auxMainLoop(NAME);
在VC編輯器下鍵入下述代碼後,保存為後綴是.cpp的C++文件。開始編譯,在「The build command requires an active project workspace」。「Would you like to create a default project workspace」? 的提示後,選擇「是(Y)」。進入「Project」菜單,選擇「Setting」項,彈出「Project Setting」對話框,選擇「Link」項,在「Libaray」欄目中加入OpenGL提供的函數庫:「opengl32.lib glu32.lib glaux.lib」。(注意:在執行程序時,Windows的system目錄下要包含opengl32.dll及glu32.dll兩個動態連接庫)。附源程序代碼:

#include "windows.h"
#include "gl/gl.h"
#include "gl/glaux.h"
#include "gl/glu.h"
#include "math.h"

void myinit()
{
glClearColor(1,1,0,0);
GLfloat ambient[]={.5,.5,.5,0};
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
GLfloat mat_ambient[]={.8,.8,.8,1.0};
GLfloat mat_diffuse[]={.8,.0,.8,1.0};
GLfloat mat_specular[]={1.0,.0,1.0,1.0};
GLfloat mat_shininess[]={50.0};
GLfloat light_diffuse[]={0,0,.5,1};
GLfloat light_position[]={0,0,1.0,0};
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,mat_ambient);
glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT_AND_BACK,GL_SHININESS,mat_shininess);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0,GL_POSITION, light_position);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
}

void CALLBACK display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
auxSolidSphere(1.0); // 繪制半徑為1.0的實體球
glFlush(); // 強制輸出圖像
auxSwapBuffers(); // 交換繪圖緩存
_sleep(100);
}

void CALLBACK Idledisplay()
{
// x,y滿足x2+y2=0.01。這樣可以使物體沿該圓軌跡運動。
static float x=-.1,y=0.0;
static BOOL mark=TRUE;
static float step=.01;
x+=step;
if(x<=.1&&x>=-.1)
{
if(step>0)
y=sqrt(.01-x*x);
else
y=-sqrt(.01-x*x);
glTranslatef(x,y,0);
}
else
{
step=0-step;
}
display();
}

void CALLBACK myReshape(GLsizei w,GLsizei h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
glOrtho(-3.5,3.5,-3.5*(GLfloat)w/(GLfloat)h, 3.5*(GLfloat)w/(GLfloat)h,-10,10);
else
glOrtho(-3.5*(GLfloat)w/(GLfloat)h,3.5* (GLfloat)w/(GLfloat)h,-3.5,3.5,-10,10);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

void main()
{
auxInitDisplayMode(AUX_DOUBLE|AUX_RGBA);
auxInitPosition(0,0,400,400);
auxInitWindow(" circle ");
myinit();
auxReshapeFunc(myReshape);
auxIdleFunc(Idledisplay);
auxMainLoop(display);
}

給你一個關於VC和OPENGL的網站,不錯的
http://dev.yesky.com/402/2084902.shtml

❸ 怎麼用codeblocks編寫c語言的圖形程序

在codeblocks中,可以通過集成EGE庫,來實現C語言圖形程序的編寫,具體方式如下:

一、安裝:

1、下載ege安裝包;

2、將安裝包解壓

3、把壓縮包里include目錄下所有文件,復制到編譯器安裝目錄下的include目錄內,例如D:MinGWinclude;

4、把lib目錄下對應編譯器名目錄下的文件,復制到編譯器安裝目錄下的lib目錄內,例如D:MinGWlib。

二、建立工程:

只要第1步做好以後,其實已經安裝好ege了,剩下的只是配置build option.
點擊file-new-projects,選擇Console application:

❹ 統贏慢走絲編程教程的步驟是什麼

一、前期工作

  1. 先在指定界面中任意畫一個圖形。

  2. 然後點擊「 圖元更改」 來確認你所畫圖形的圖層。左下條指令中提示「 請選取圖形(+):」 ,圈中你所選圖形。 被選中圖形既變成虛線,按滑鼠右擊完成選圖。

  3. 輸入「 L」 選中圖層 ,然後右擊滑鼠。 選中你所要確定的圖層。

  4. 畫圖前期工作完畢後,按「 檔案」 →「 另存新檔」。 然後系統提示輸入新檔的名稱。

二、 後置處理

1.點擊「 線割應用」
在指令條中輸入「 S」 按回車。出現切割路徑設置。輸入引入線長度, 切割方向,路徑形態。 設置完畢按確定。指定你要切割的路徑和啟始點位置,點擊滑鼠左鍵。 此時所選圖形中便會顯示該工件的路徑形態( 凹模或凸模 ),引入線長度,切割方向。

2.然後在MID OF 中打入「P」,回車進液友游入P處理。選擇S:編程設置。然後具體可以輸入你所需要的「過切長度」,「脫離線長度」?等括弧內的數據。

3.設置完備後按「空格」鍵進入「CHARMILLES專用工件設置窗口」
讀取你所加工機床的型號。隨後根據不同的機床型號,其「圖層名稱」後所對應的精修次數就會有所變化,確定你所想要的加工次數與實際加工圖層相符。選擇好*.*TEC文件和工件高度,按確定結束。
4. 空格後,選擇好文件的輸出路徑。按保存。
5.程序便自動進行模擬。如想讓其暫停可按「空格」或「滑鼠右鍵」。
6.最後把所保存的文件*.*.ISO同C:/TWINCAD/*.*.CMD文件COPY到機床上並運行*.*.CMD程序便可以。

三、 模式解析
1.部分斜度/斜度加工:
畫完圖形後,進入後置處理「WTCAM」。在路徑設置後進入D:其他細節--T:斜度,輸入用戶需要的斜度,然後手動選擇該斜度圖形的邊。不同的邊斜度選定只要重新在T:斜度 中輸入新的斜度既可。

2.加工告配模板:

作完模板圖形,進入「WTCAM」,在路徑設置後按照你想要的加工順序依次點中模板上的加工圖形。如果你要對次序修改,進入O:秩序,可以分別選擇I:依次設定/S:對調順序/(C:改變順序 )來調換模板內鬧銷程序的加工秩序。進入P處理—S:編程設定。在編程設定的其他條件窗口中選擇「自動穿絲方式」 。

3.圖形路徑設置完後,可以對上下異形的拐角部分進行強制對接。在3D:上下異形—J:指定對接 開面加工。

4. 作一不封閉的圖形(開面圖形),注意:也要對其進行自動串接。在自動選擇路徑模式下選中被加工圖形,在出現的對話框中選「確定」,隨後它會提示確定補償方向。所謂補償方向就是加工是偏移量的方向,既左偏還是右偏。你點中的那個面既為偏移量移動的方向。
5. 若需對開面加工圖形的某一邊進行斜度加工。
6備註:
a:WTCAM模板保存路徑在 TWINCAD/SUPPORT/*.*.TCAD
b: 若要移動原點坐標,點中「圖元移動」或打指令「MOVE」,選好圖形。點中設置原點的點,並且移動圖形到指定基準點:(0,0)
c: 若要查看某個點的坐標可選擇「模具式標注」或打指令:「Odim」 按「空格」。

❺ DELPHI基礎教程:Delphi圖形圖像編程(二)[1]

畫直線納李時 用戶只有在松開滑鼠才能看見直線 對直線的變化不能進行實時觀測 這是因為滑鼠移動時程序沒有進行某種應 Delphi定義了搭歲OnMouseMove事件來響應滑鼠移動 以下代碼可使用戶隨時觀測直線的變化

procere TForm FormMouseMove(Sender:Tobject)

begin

Drowto(X Y)

Moveto(origin)

end

origin是起始點

繪圖功能的實現

繪圖軟體常根據用戶的要求改變繪圖工具 Graphex dpr常式中 當用戶按下某個按鈕時 可選擇繪圖工具中的畫筆或畫刷 在程序類型說明部分定義了五種繪圖工具

type

TDrawingTool = (dtLine dtRectangle dtEllips dtRoundRect dtPolygon)

當選中某種按鈕 則選中了相應的繪圖工具 如

procere TForm LineButtonClick(Sender: TObject)

begin

DrawingTool := dtLine;

end;

procere TForm RectangleButtonClick(Sender: TObject)

begin

DrawingTool := dtRectangle;

end;

procere TForm EllipseButtonClick(Sender: TObject)

begin

DrawingTool := dtEllipse;

end;

洞枝遲procere TForm RoundRectButtonClick(Sender: TObject)

begin

DrawingTool := dtRoundRect;

end;

procere TForm PolygonButtonClick(Sender: TObject)

begin

DrawingTool :=dtPolygon;

end;

DrawShape過程定義了每種繪圖工具的動作

procere TForm DrawShape(TopLeft BottomRight: TPoint; AMode: TPenMode)

begin

with Image Canvas do

begin

Pen Mode := AMode;

case DrawingTool of

dtLine: begin

MoveTo(TopLeft X TopLeft Y)

LineTo(BottomRight X BottomRight Y)

end;

dtRectangle: Rectangle(TopLeft X TopLeft Y BottomRight X BottomRight Y)

dtEllipse: Ellipse(TopLeft X TopLeft Y BottomRight X BottomRight Y)

dtRoundRect: RoundRect(TopLeft X TopLeft Y BottomRight X BottomRight Y

(TopLeft X BottomRight X) div (TopLeft Y BottomRight Y) div )

dtPolygon:Polygon([Point( ) TopLeft BottomRight]) end;

end;

end;

程序剛運行時 只有一個工具欄 當用戶單擊畫筆和畫刷時 則出現相應的工具欄 其代碼如下

procere TForm PenButtonClick(Sender: TObject)

begin

PenBar Visible := PenButton Down;

end;

procere TForm BrushButtonClick(Sender: TObject)

begin

BrushBar Visible := BrushButton Down;

end;

在設計繪圖程序時 還要解決一些問題 如為了在滑鼠移動時能觀測圖形的變化 我們定義了OnMouseMove事件 但會出現這樣的現象 當滑鼠進入繪圖區時 用戶未按下滑鼠鍵 畫布上卻出現繪制的圖形 這是我們不希望看到的 其原因是沒有對滑鼠按鈕是否按下進行判斷 因此在窗體對象中定義了drawing的域 當滑鼠按鈕按下時 drawing 設置成真值 只有drawing為真 滑鼠移動才執行繪圖功能 當滑鼠鍵松開時 drawing設置成假 滑鼠移動將不執行繪圖動作

lishixin/Article/program/Delphi/201311/25246

❻ Error 200:Division by zero

Turbo Pascal圖形編程教程

Pascal是一款有很強圖形功能的開發工具,它可以編制各種圖形窗口,並且聽說還支持滑鼠.但是時過境遷,

在vb,vc一統天下的今天,關於Pascal圖形操作的書已經像古董一樣難於尋找了,我現在將Tp 7.0的Help文件

中的一些有關圖形操作的過程與函數整理了一下,並自己寫了一些例子,加入了一些自己的看法,便得到了這篇

教程.其中如有錯誤,望各位不吝賜教。閱讀之前希望大家做好准備,比如:找一些食品放在跟前,因為你可能

因為鑽研一個函數而耗費大量的時間,還有你可能因為初始化無法完成而大動肝火。

第一章 使用Pascal進行圖形操作前的准備

在 Turbo Pascal 中有一個 CRT 單元及一個 GRAPH 單元,簡單的說 crt 單元是為了實現

字元的顯示與處理,另外的那個稱為 GRAPH 單元是專門用來處理圖形的。我們看到的有關圖形的

程序往往都要用到。所以若是要在 Turbo Pascal 中實現圖形操作,就必須要調用 CRT 單元及

GRAPH 單元。那麼怎麼樣來調用 CRT 及 GRAPH 單元呢?現在線來介紹一下單元調用語句:USES

USES的語法:

USES 單元表識符,……,單元表識符;

說明:

擴展名為*.TPW是Windows下的單元文件,*.TPU是DOS下的單元文件。

位置:變數說明var之前。

講到這里,我還是要順便提一下什麼是單元?是這樣的:我們在編程序的時候,要用到 procere

或者 function ,中文名稱一個是過程另一個是函數。做不同的程序時,往往要用到一些相同的過程

或者相同的函數。如果統統放到程序中,程序會碩大無比,比例與調試與編譯,並且在過去

「惜kb如金」的年代裡,這樣的程序也很浪費。於是,簡單的講,人們把它們做成「包」--我

們稱之為單元。一來,免去很多重復的痛苦,大家共享代碼也很簡單,另外,很多不願意讓別人看

到源程序的人也很樂於如此----這只是我的杜撰。生產 pascal 語言的公司也提供一些做好的

單元,放在安裝盤上方便實用。 crt ,graph 即使如此,還有 dos ,system 等等。

第二章 Pascal圖形模式的初始化及退出

1.初始化

Pascal的圖形操作在使用之前必須先進行初始化。如果說你編寫圖形程序中出現問題,是有八九十悉桐卡

在這里了。 這也是非常令我頭疼的問題。 用過程 initgraph(GraphDriver,GraphMode,PathToDriver)

其中 GraphDriver , GraphMode 為整形變數, PathToDriver為字元串變數, GraphDriver為圖形驅動器,

GraphMode為圖形模式 , PathToDriver指定的路徑名中建築圖形驅動程序(以.BGI為後綴)。initgraph使

用方法見下例:

program t001 (input,output);

uses crt,graph;

var

gd:gm:integer; {定義GraphDriver,GraphMode變數}

begin

gd:=detect;

initgraph(gd,gm,''); {調用initgraph過程,PathToDriver預設則表示在當前目錄中尋找

《-------這個很重要,一般也可以寫成 initgraph(gd,gm,'c:\tp\bgi'); 當然

如果你是如此安裝的話。}

bar(100,100,200,200); {畫一個以(100,100),(200,200)為頂點的矩形,這是一個標准過程,

你在後面還會看到一個名為bar3d的東東,那個是畫立體矩形的}

delay(1000); {將此圖形保留一秒,10000就是10秒,依此類推}

end.

2.退出

Closegraph過程

功能:退出圖形模式.

在圖形模式下如果使用 write 等等文本輸出可能會出問題---比如無法看到等等。好像還可能引

起顯示上的問題,反正養成一個好習慣也沒什麼不好的。這里有一個技備差巧,當你發現無論如何調整都無

法顯示圖形時,你可以調用自帶的例子,用來測試,看看是否是程序本身的問題。

注意,這里有一個不屬於圖形的,但是非常容易遇到的問題。前面我們說過,在圖形編程使用 graph 單睜滾坦

元的時候,我們也常常會使用crt單元,這就有一個問題:crt 單元在主頻高的機器上無法正常運行。會出

現 200 號錯誤!!!請下載補丁,在我們的網站上就有。還有一種情況,就是出了問題沒有提示!表現是

運行程序什麼反應也沒有。如果你出現這種情況,首先檢查程序,如果沒有問題,非常有可能使這種情況,

也請下載補丁!據報告奔騰180以上的機器具都不同程度存在這種問題!

第三章 基本幾何圖形的繪制

畫直線:

1.Line過程

描述:procere Line(x1, y1, x2, y2: Integer);兩點確定一直線.夠簡單吧!

2.Lineto過程

描述:procere LineTo(X, Y: Integer);從當前點項目標點(x,y)作直線.

畫圓:

1.Circle過程

功能:以(X,Y)為圓心、Radius為半畫一圓。

描述:procere Circle(X,Y:Integer;Radius:Word);

示例:Circle(100,100,200) {畫一個以(100,100)為圓心,200為半徑的圓}

畫橢圓:

1. Ellipse過程

功能:畫一個以(X,Y)為中心,XRadius和YRadius為半軸,StAngle和EndAngle為始角和終角的橢圓弧。

描述:procere Ellipse(X,Y:Integer;StAngle,EndAngle:Word;XRadius,YRadius:Word);

說明:角度沿逆時針方向,單位是度。0度指向東。

畫圓弧:

1.Arc過程

功能: 畫一個以(X,Y)為中心,Radius為半徑,StAngle和EndAngle為始角和終角 的圓弧。

描述: procere Arc(X,Y : Integer; StAngle,EndAngle,Radius:Word);

說明: 角度沿逆時針方向,單位是度。0度指向東。

示例: Arc(100,100,0,90,50) {畫出第一卦限1/4圓,半徑50,圓心(100,100)}

畫矩形:

1.Bar過程

功能:畫一個以(x1,y1),(x2,y2)為兩個對角頂點的矩形。

描述:procere Bar(x1,y1,x2,y2:integer);

示例:Bar(100,100,200,200) {畫一個以(100,100),(200,200)為對角頂點的矩形}

2.Bar3d過程

功能:畫一個長方體.

描述:procere Bar3d(x1,y1,x2,y2:integer,depth:word,top:boolean); {x1,x2,y1,y2同上,為長方體的厚度 ,top為是否畫出頂面.}

線形,顏色,及填充設置

線形設置:

1.setlinestyle過程

功能:設置線形,及線寬.

描述:procere SetLineStyle(LineStyle: Word; Pattern: Word; Thickness: Word);

說明:linestyle(線形)一共有三種.代號0,1,2;線形如下圖:

Thichness(線寬)有兩種.代號1,3.1為普通線.3為寬線.

2.GetLineSettings過程

功能:返回當前設置的線型設置信息.

描述:procere GetLineSettings(var LineInfo: LineSettingsType);{參見LineSettingsType類型}

3.LineSettingsType類型

描述:LineSettingsType = record

LineStyle : Word; {線形}

Pattern : Word; {模式}

Thickness : Word; {線寬}

end;

此類型記錄了一種線形的信息.

線形,顏色及線形設置

顏色設置:

在pascal中共有16種顏色可以使用.

1.setcolor過程

描述: procere SetColor(Color: Word);

設置線的顏色.顏色代碼如上圖.

2.GetColor函數

功能:返回最後一次作圖時的顏色值

描述:function GetColor:word

示例:color:=GetColor; {color:word}

3.GetMaxColor函數

功能:返回系統可用的最大顏色數.

描述:num:=GetMaxColor; {將最大顏色數存到num變數中}

填充設置:

1.SetFillStyle過程

功能 設置填充模式和顏色。

描述 procere SetFillStyle(Pattern:Word;Color:Word);

說明 設置用於Bar,Bar3D的填充模式和顏色。可生系列填充模式。預設模式是實心點,預設模式

是實心點,預設顏色是調色板中最大顏色序號值。如果傳遞給SetFillStyle的輸入參數無效,

GraphResult將返回值grError,且當前填充參數不改變。

填充設置如下圖:<![endif]>

2.FillSettingsType 類型

描述:FillSettingsType=record

Pattern:word;

Color :word;

end;

此類型記錄了一種填充模式的信息.

這些知識都很簡單,更多的可以在編輯環境中按下f1觀看幫助文檔。

更多實例在 www.cpascal.com 的自編程序中

❼ 利用mfc編程來開發圖形應用程序的基本步驟主要有幾步

開發簡單 MFC 應用程序的步驟主要有:
1. 前期策劃---確定應用程序要執行哪些基本任務。
2. 新建項目---用VS新建MFC項目,設置初始屬性。
3. 界面設計---使用"對話框編輯器"設計界面:添加想要的對話框控制項,設置它們的屬性,然後精確調節它們的位置和大小以看起來更加美觀。
4. 設計實現---為控制項添畢槐物加成員變數,同時添手液加必需的程序變數以及控制項的事件處理程序,然後為你的程序編寫實現代碼以便讓它做你想要的事情。
5. 測試程序---試運行程序並明則檢查其是否按預期工作。如果存在問題,需進行修改。

❽ DELPHI基礎教程:Delphi圖形圖像編程(二)[2]

另外一個問題是 我們希望得到的是滑鼠按鈕按下和松開這兩點所形成的圖形 但OnMouseMove卻把滑鼠軌跡上各點與起始點所形成的所有圖形畫在屏幕上 這同樣是我們不希望看到的 為了解決這些問題 程序定義了滑鼠的三個事件

procere TForm FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X Y: Integer)

begin

Drawing := True;

Image Canvas MoveTo(X Y)

Origin := Point(X Y)

MovePt := Origin;

OriginPanel Caption := Format( Origin: (%d %d) [X Y])

end;

procere TForm FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X Y: Integer)

begin

if Drawing then

DrawShape(Origin Point(X Y) pmCopy)

Drawing := False;

end;

procere TForm FormMouseMove(Sender: TObject; Shift: TShiftState; X

Y: Integer)

begin

if Drawing then

begin

DrawShape(Origin MovePt pmNotXor)

MovePt := Point(X Y)

DrawShape(Origin MovePt pmNotXor)

end;

MovePt用來記錄滑鼠當陵御前位置 當下次滑鼠移動時 就衡局能在上次滑鼠繪制的圖形上畫一個形狀 大小一樣的圖形 並把畫筆顏色設置成PmNotXor 使上次繪制的圖形顏色變成了屏幕顏色 從而達到 橡皮擦 的效果

將畫筆 畫刷的Style屬性設置成用戶希望的值 可實現對畫筆和畫刷風格的選擇

procere TForm SetBrushStyle(Sender: TObject)

begin

with Image Canvas Brush do

begin

咐汪讓if Sender = SolidBrush then Style := bsSolid

else if Sender = ClearBrush then Style := bsClear

else if Sender = HorizontalBrush then Style := bsHorizontal

else if Sender = VerticalBrush then Style := bsVertical

else if Sender = FDiagonalBrush then Style := bsFDiagonal

else if Sender = BDiagonalBrush then Style := bsBDiagonal

else if Sender = CrossBrush then Style := bsCross

else if Sender = DiagCrossBrush then Style := bsDiagCross;

end;

procere TForm SetPenStyle(Sender: TObject)

begin

with Image Canvas Pen do

begin

if Sender = SolidPen then Style := psSolid

else if Sender = DashPen then Style := psDash

else if Sender = DotPen then Style := psDot

else if Sender = DashDotPen then Style := psDashDot

else if Sender = DashDotDotPen then Style := psDashDotDot

else if Sender = ClearPen then Style := psClear;

end;

end;

圖像對象概述

TGraphic對象

TGraphic對象是TBitmap TIcon Tmetafile對象的基類 如果知道圖像的具體類型( 如點陣圖 圖標元文件) 則應將圖像貯存在相應類型的對象中( 如TBitmap TIcon Tmetafile) 否則應該使用可貯存任何圖像類型的TPicture對象

TPicture對象

TPicture對象可以保存點陣圖 圖標或元文件 Graphic屬性中包括圖像的類型 圖像的高度和寬度分別定義在Height Width屬性中 調用LoadFromFile方法 可以從文件中裝載一幅圖像

procere TForm FormCreate(Sender: TObject)

begin

BitBtn Glyph LoadFromFile( TARTAN BMP )

end;

要保存一個點陣圖 則要用SaveToFile方法 要把圖像復制到剪切板 可以調用TClipboard對象的Assign方法

TImage部件

TImage部件用以在窗體中顯示圖像 它的Picture 屬性保存著要顯示的圖像 這是一個TPicture對象 AutoSize Stretch屬性是用來調節部件與圖像的大小的 當AutoSize 為真值時 TImage部件將根據它所包含的圖像的大小來調整自身的大小 當AutoSize為假值時 不論圖像有多大 部件將保持設計時的大小 如果部件比圖像小 那麼只有一部分圖像是可見的 當Stretch為真值時 點陣圖像將根據部件的大小調整自身的大小 當部件大小改變時 元文件也做相應變化 Stretch屬性對圖標沒有作用

TBitmap Object(點陣圖對象)

點陣圖對象包含一個點陣圖圖像 有HBITMAP HPALETE句柄 可自動管理調色板 點陣圖對象也有畫布屬性 點陣圖的Palette屬性用來控制點陣圖的顏色映射 它包括 種可顯示的顏色 如果應用程序用前景色繪制點陣圖 Palette 屬性的顏色將被加入Windows系統調色板 其它顏色被映射到系統調色板已存在的顏色 如果應用程序用自己的顏色繪制點陣圖 而其它程序已佔有系統調色板 點陣圖的顏色將被映射到系統調色板中

如果Monochrome屬性設置成假 點陣圖將顯示成彩色 反之顯示成黑白色

調用Draw和StretchDraw方法可在畫布上繪制點陣圖

圖像對象的應用

本章常式中 單擊(文件|瀏覽)菜單項 將彈出一個圖像瀏覽窗體 如果用戶在窗體中選擇文件列表框的圖形文件 窗體右上角的圖像部件上將出現此文件所代表的圖像 若選擇 雕刻效果 按鈕中檢查框 窗體中的加速按鈕和點陣圖按鈕上將出現點陣圖

以下代碼是將圖像文件裝載至圖像部件上

procere TImageForm FileListBox Click(Sender: TObject)

var

FileExt: string[ ];

begin

FileExt := UpperCase(ExtractFileExt(FileListBox Filename))

if (FileExt = BMP ) or (FileExt = ICO ) or (FileExt = WMF ) then

begin

Image Picture LoadFromFile(FileListBox Filename)

Label Caption := ExtractFilename(FileListBox Filename)

if (FileExt = BMP ) then

begin

Label Caption := Label Caption +

Format( (%d x %d) [Image Picture Height Image Picture Width])

ViewForm Image Picture Bitmap := Image Picture Bitmap;

ViewAsGlyph(FileExt)

end;

if FileExt = ICO then Icon := Image Picture Icon;

if FileExt = WMF then

ViewForm Image Picture Metafile := Image Picture Metafile;

end;

end;

這個過程首先判斷文件類型 如果是圖像文件 則將圖像裝載至圖像部件上 並在標簽上列出文件名稱 如果是點陣圖文件 還將顯示其大小

lishixin/Article/program/Delphi/201311/25244

❾ DELPHI基礎教程:Delphi圖形圖像編程(一)[3]

響應滑鼠事件

滑鼠常被用作繪圖的工具 應用程序利用滑鼠位置的變化來繪制各種不同的圖形 滑鼠有三個動作 滑鼠按鈕按下 滑鼠移動 滑鼠按鈕彈起 在Delphi中 對應三個動作有三個不同的事件 OnMouseDown OnMouseMove OnMouseUp

當Dlephi應用程序探測到一個滑鼠動枝慧作時 它傳遞五個參數 並調用相應的事件響應

程序員可利用這些參數來定義事件程序 五個參數如下表 :

表 滑鼠事件的五個參數

━━━━━猛顫答━━━━━━━━━━━━━━━━━━━━━━

參數 含義

──────────────────────────

Sender 探測滑鼠動作的對象

Button 涉及的滑鼠按鈕 左鍵 中鍵 右鍵

Shift 滑鼠動作時 Alt Ctrl Shift按鈕的狀態

X Y 事件發生時滑鼠的坐標

━━━━━━━━━━━━━━━━━━━━━━━━━━━

當滑鼠按下時發生OnMouseDown事件 舉一個簡單例子來說明程序如何對該事洞磨件進

行響應 假如我們想在滑鼠按下的地方出現 Here

響應滑鼠的OnMouseDown事件

可在該事件中調用TextOut方法

procere TForm FormMouseDown(Sender: TObject Button: TMouseButton;

Shift : TShifState; X Y : Integer)

begin

Canvas TextOut(X Y Here! )

end;

用戶放鬆滑鼠鍵時發生OnMouseUp事件 該事件發生時 滑鼠到達的對象並不一定是滑鼠鍵按下時滑鼠所在的對象 例如 用戶可在窗體之外畫一條線段 (滑鼠在窗體外 線段在窗體內) 下面的代碼可用滑鼠繪制直線

procere TForm FormMouseDown(Sender:TObject)

begin

Moveto(x y)

end;

procere TForm FormMouse Up(Sender:Tobject)

begin

Lineto(X Y)

end;

返回目錄 DELPHI基礎教程

編輯推薦

Java程序設計培訓視頻教程

J EE高級框架實戰培訓視頻教程

Visual C++音頻/視頻技術開發與實戰

Oracle索引技術

ORACLE G資料庫開發優化指南

Java程序性能優化 讓你的Java程序更快 更穩定

C嵌入式編程設計模式

Android游戲開發實踐指南

lishixin/Article/program/Delphi/201311/25249

熱點內容
無限密碼怎麼改 發布:2025-07-10 09:14:32 瀏覽:103
coc按鍵精靈腳本 發布:2025-07-10 09:12:40 瀏覽:310
excel表格ftp函數 發布:2025-07-10 09:05:50 瀏覽:275
u2game的解壓密碼 發布:2025-07-10 09:05:14 瀏覽:596
c語言編譯器ide蘋果下載 發布:2025-07-10 09:05:13 瀏覽:293
andftp埠 發布:2025-07-10 08:57:04 瀏覽:606
戰地一有什麼不用加速器的伺服器 發布:2025-07-10 08:51:33 瀏覽:405
linux怎麼看自己伺服器的ip 發布:2025-07-10 08:51:29 瀏覽:136
怎麼寫腳本刷視頻 發布:2025-07-10 08:49:51 瀏覽:382
安卓微信在哪裡設置鈴聲 發布:2025-07-10 08:48:05 瀏覽:233