圖片編程
❶ 什麼是圖像編程語言
就是不用自己編寫代碼,和搭積木一樣,每個小模塊的代碼功能都是封裝好的,你只需要根據你想實現的功能將它搭建出來就行。在網易的公開課上應該能看見。。。你找找看
❷ 用c語言編程怎樣能夠編出圖片上的圖形
#include<stdio.h>
#include<stdlib.h>
voidmain(){inti,j;
for(i=0;i<9;i++){
for(j=0;j<(N/2-abs(N/2-i)+1);j++)printf("*");
printf(" ");
}
}
❸ 學習圖形編程
我可以很好的回答你這個問題。
因為我從事過圖形解碼的大型軟體開發項目。
我明白你想了解的知識。
我認為,首先你需要把了解圖形解碼和編程分開去考慮。
另外,常用的圖片格式有jpeg,tiff,png等等,不過我認為你應該學習bmp。
因為bmp最簡單。其他的格式比這個都難,壓縮演算法都比較復雜。
因為圖片解碼最重要的是三個方面,
第一,對於圖片的構造很了解,就是說圖片頭的信息,片段的信息,等等,非常熟悉。
第二,對於圖片的內容部分,也就是通常說的RGB數據,常常使用壓縮演算法進行壓縮後存儲。所以,相應的,如果想解碼,必須會相應的解壓縮和壓縮演算法。這個也有很多文檔詳細介紹。
第三,對於顏色空間,顏色空間轉換的只是需要熟悉。如果你沒有太多這方面知識的話,可能認為只有RGB顏色空間,實際上有很多其他的顏色空間,例如,CMYK,YCbCr,Lab等等。當存儲的數據是使用非RGB方式存儲的時候,常常需要通過轉換公式進行轉換成RGB。
下面是我對樓主的建議。
首先,你應該尋找關於BMP相關的圖形構造的知識。
對BMP的構造進行詳細研究,至少需要1周到2周時間。
(參考資料:http://ke..com/view/7671.htm)
先不要學習壓縮演算法,因為很麻煩。
BMP有一種非壓縮模式,就對這種模式嘗試進行解碼。
其次,需要一定的編碼和設計能力。
進行程序設計,將類圖和流程圖畫出來。
接下來,進行程序編碼,調試。
最終,程序測試完成。
最後的最後,如果你感興趣,可以再去研究其他的壓縮演算法,其他的圖片格式。
來豐富你的程序。
但是如果你真的有這么的大的野心的話,估計需要找好幾個志同道合的人,開發幾年才能完美。
❹ 圖形學編程
在三維繪圖蓬勃發展的過程中,計算機公司推出了大量的三維繪圖軟體包。其中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
❺ 怎樣用c語言編程圖片
C語言圖形界面編程,可以使用windows API,圖形庫等的支持。詳細的,你只能再詳細問。
❻ 數控圖片編程大全
數控車床編程基礎簡介1.公制(米制)與英制編程
數控車床使用的長度單位量綱有公制(米制)和英制兩種,由專用的指令代碼設定長度單位量綱,如FANUC-0TC系統用G20表示使用英制單位量綱,G21表示使用公制(米制)單位量綱。系統通電開機後,機床自動處於公制尺寸狀態。
2.直徑編程和半徑編程
(1)直徑編程:採用直徑編程時,數控程序中X軸的坐標值即為零件圖上的直徑值。
(2)半徑編程:採用半徑編程,數控程序中X軸的坐標值為零件圖上的半徑值。考慮使用上的方便,一般採用直徑編程。CNC系統預設的編程方式為直徑編程。
a)直徑編程
b)半徑編程
圖1 數控車削編程分類
a) A:(30.0,80.0),B:(40.0,60.0)
b) A:(15.0,80.0),B:(20.0,60.0)
3.車床的前置刀架與後置刀架
數控車床刀架布置有兩種形式:如圖2所示
圖2 車床的前置刀架與後置刀架
(1)前置刀架。前置刀架位於Z軸的前面,與傳統卧式車床刀架的布置形式一樣,刀架導軌為水平導軌,使用四工位電動刀架;
(2)後置刀架。後置刀架位於Z軸的後面,刀架的導軌位置與正平面傾斜,這樣的結構形式便於觀察刀具的切削過程、切屑容易排除、後置空間大,可以設計更多工位的刀架,一般多功能的數控車床都設計為後置刀架。
4.刀尖半徑補償
在數控車削編程中為了編程方便,把刀尖看作為一個尖點,數控程序中刀具的運動軌跡即為該假想尖點的運動軌跡。(如圖3所示)
圖3 假想刀尖與刀尖半徑
數控系統中引入了刀尖半徑補償: 在數控程序編寫完成後,將已知刀尖半徑值輸入刀具補償表中,程序運行時數控系統會自動根據對應刀尖半徑值對刀具的實際運動軌跡進行補償。
數控加工中一般都使用可轉位刀片,每種刀片的刀尖圓角半徑是一定的,選定了刀片的型號,對應刀片的刀尖圓角半徑值即可確定。
刀尖圓弧半徑補償指令:
指令格式 G41(G42、G43)G01(G00)X(U)_Z(W)
指令功能 G41為刀尖圓弧半徑左補償;
G42為刀尖圓弧半徑右補償;
G40是取消刀尖圓弧半徑補償。
指令說明 順著刀具運動方向看,刀具在工件的左邊為刀尖圓弧半徑左補償;刀具在工件的右邊為刀尖圓弧半徑右補償。只有通過刀具的直線運動才能建立和取消刀尖圓弧半徑補償。
5.數控機床的初始狀態
初始狀態: 指數控機床通電後具有的狀態,也稱為數控系統內部默認的狀態,一般設定絕對坐標方式編程、使用米制長度單位量綱、取消刀具補償、主軸和切削液泵停止工作等狀態作為數控機床的初始狀態。 不過數控編程是最重要的。 目前國內這內技術人才。真正重要的不多。不過這個學會。很有用的。 然後編程學會。把CAD精通下。 因為CAD畫圖出來。它精確之後。 你數控編程才好。
❼ 圖形編程是什麼
圖形編程的概念很廣,有UI編程,還有游戲編程,游戲編程又分為2D游戲、3D游戲等。有人覺得游戲不是一門藝術,因為受眾也是參與者;有人覺得游戲是一門藝術,尤其是一門交互藝術。創造游戲的人和游戲的受眾,都在虛擬世界中沉迷。
UI編程也如是,早期PC機上,人們在厭倦了XP風格的界面後,爭先恐後的用GDI+技術產出了各種各樣的UI風格。這種風格的UI界面不但美觀而且安全。
其安全性在於,使用GDI+技術繪制的UI控制項,不在Windows系統本身控制范圍內,所以任何檢測工具都無法檢測到其存在,這使得UI入侵的難度變高。
圖形與數據:
圖形界面編程是在與機器做抗爭,而數據編程是在與人做抗爭。數據,是人產生的,所以數據編程是對人的編程。人產生的數據千變萬化,一套代碼無法適應持續波動的數據,但是經過一系列演算法,過濾,檢測後,最終得出的結果卻是十分客觀的。
這是一個奇妙的事情,甚至可以上升到哲學層面。對機器編程產生主觀結果,對人編程產生客觀結果。如果按照這個理論,那麼上面那位說自己喜歡「算出東西」的同學,則是一個標準的理科生思維,而喜歡圖形編程的同學,則是人文和技術兼備的創作家。
❽ 圖形編程語言有哪幾種
三圍的圖形編程一般就採用兩種主流技術,都和顯卡的支持相關。三維技術是需要硬體提供支持的,因為顯卡可以提供強大的硬體處理能力來幫助我們完成矩陣計算。
OpenGL是目前用的最多的圖形庫,旗下又有用於手機和平板的以及網頁應用的OpenGL ES精簡版本。支持的語言總類眾多,其中主流語言有:C++,Java,Javascript,C#,Objective-C。
DirectX3D主要是用於windows系統。它是由微軟公司開發的一套程序庫。主要用於windows游戲開發,和windows平台的模擬軟體開發。支持的語言也有很多:C++,Java,C#都支持
學哪一種看你喜歡什麼樣的平台以及以後用於什麼目的。各種系統上以及各種語言的library變種和打包版本都各不相同。
❾ 什麼是圖形化編程編程語言是什麼
圖形化編程就是編寫有界面的程序,編程語言是一種被標准化的交流技巧,用來向計算機發出指令,定義計算機程序。
一、圖形化編程
1、使用圖形化編程可以進行良好的頁面布局,在現有的很多Web應用中,其應用程序的頁面布局經常需要使用圖像,這樣能夠讓頁面整體效果更加友好。用戶會對界面友好的應用程序印象深刻從而會進行回訪。
2、在頁面布局中,很多設計人員喜歡使用CSS設計,這樣能夠簡化頁面代碼,將頁面布局代碼和頁面代碼相分離,從而提高了維護性。
二、編程語言
1、允許程序員准確地定義計算機需要使用的數據以及在不同情況下要採取的行動。在不斷的發展和變化過程中,從最初的機器語言到2500多種高級語言,每種語言都有其特定的目的和不同的發展道路。
2、編程語言不像人類自然語言的發展和變化那樣緩慢和持久,它的發展是相當迅速的。這主要是因為計算機硬體、互聯網和IT產業的發展促進了編程語言的發展。
(9)圖片編程擴展閱讀:
編程語言選用技巧
1、在選擇編程語言之前,應充分考慮項目的總體框架,以確定編程語言的分布。因為整個項目的所有部分都是用一種語言寫的。在一些項目中,可以相對簡單地選擇最佳編程語言,但是編程過程是靈活多變的。最佳語言選擇需要根據程序要求進行更改。
2、在科學合理的原則下,我們應該選擇最熟悉的編程語言。因為開發人員熟悉某種語言,他們可以極大地幫助他們預測開發時間、過程和其他內容,這可以很好地避免大的變化,提高編程效率。
3、對於高成本操作,如加密、圖形渲染、視頻處理和其他內容操作,應給予充分考慮。對於這些高成本的操作模塊,開發人員應該選擇需要編譯的靜態語言。JAVA和C#是最好的選擇。
參考資料來源:網路-編程語言