A. 如何用c語言製作學校地圖
因為所有的圖像處理軟體(例如:制圖軟體等),都需要涉及到:數據結構、計算機圖形學的理論知識、以及相關的數學模型。
故如果想用 C 語言實現製作整個學校地圖的功能,那麼肯定不是簡單地使用 C 語言的本身語句、以及語法就能夠完成的。還必須要學習計算機軟體專業的其他相關的數學課程、以及計算機軟體專業的一些專業課程(例如:計算機圖形學就是必不可少的課程)。
B. C語言圖形界面怎麼做出來
這是最簡單的界面程序://c++.cpp:定義應用程序的入口點。
//
#include"stdafx.h"
#include"c++.h"
#defineMAX_LOADSTRING100
//全局變數:
HINSTANCEhInst; //當前實例
TCHARszTitle[MAX_LOADSTRING]; //標題欄文本
TCHARszWindowClass[MAX_LOADSTRING]; //主窗口類名
//此代碼模塊中包含的函數的前向聲明:
ATOM MyRegisterClass(HINSTANCEhInstance);
BOOL InitInstance(HINSTANCE,int);
LRESULTCALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
INT_PTRCALLBACK About(HWND,UINT,WPARAM,LPARAM);
intAPIENTRY_tWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPTSTRlpCmdLine,
intnCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
//TODO:在此放置代碼。
MSGmsg;
HACCELhAccelTable;
//初始化全局字元串
LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);
LoadString(hInstance,IDC_C,szWindowClass,MAX_LOADSTRING);
MyRegisterClass(hInstance);
//執行應用程序初始化:
if(!InitInstance(hInstance,nCmdShow))
{
returnFALSE;
}
hAccelTable=LoadAccelerators(hInstance,MAKEINTRESOURCE(IDC_C));
//主消息循環:
while(GetMessage(&msg,NULL,0,0))
{
if(!TranslateAccelerator(msg.hwnd,hAccelTable,&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return(int)msg.wParam;
}
//
//函數:MyRegisterClass()
//
//目的:注冊窗口類。
//
//注釋:
//
//僅當希望
//此代碼與添加到Windows95中的「RegisterClassEx」
//函數之前的Win32系統兼容時,才需要此函數及其用法。調用此函數十分重要,
//這樣應用程序就可以獲得關聯的
//「格式正確的」小圖標。
//
ATOMMyRegisterClass(HINSTANCEhInstance)
{
WNDCLASSEXwcex;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style =CS_HREDRAW|CS_VREDRAW;
wcex.lpfnWndProc =WndProc;
wcex.cbClsExtra =0;
wcex.cbWndExtra =0;
wcex.hInstance =hInstance;
wcex.hIcon =LoadIcon(hInstance,MAKEINTRESOURCE(IDI_C));
wcex.hCursor =LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground =(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName =MAKEINTRESOURCE(IDC_C);
wcex.lpszClassName =szWindowClass;
wcex.hIconSm =LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_SMALL));
returnRegisterClassEx(&wcex);
}
//
//函數:InitInstance(HINSTANCE,int)
//
//目的:保存實例句柄並創建主窗口
//
//注釋:
//
//在此函數中,我們在全局變數中保存實例句柄並
//創建和顯示主程序窗口。
//
BOOLInitInstance(HINSTANCEhInstance,intnCmdShow)
{
HWNDhWnd;
hInst=hInstance;//將實例句柄存儲在全局變數中
hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
if(!hWnd)
{
returnFALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
returnTRUE;
}
//
//函數:WndProc(HWND,UINT,WPARAM,LPARAM)
//
//目的:處理主窗口的消息。
//
//WM_COMMAND -處理應用程序菜單
//WM_PAINT -繪制主窗口
//WM_DESTROY -發送退出消息並返回
//
//
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
intwmId,wmEvent;
PAINTSTRUCTps;
HDChdc;
switch(message)
{
caseWM_COMMAND:
wmId=LOWORD(wParam);
wmEvent=HIWORD(wParam);
//分析菜單選擇:
switch(wmId)
{
caseIDM_ABOUT:
DialogBox(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd,About);
break;
caseIDM_EXIT:
DestroyWindow(hWnd);
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
break;
caseWM_PAINT:
hdc=BeginPaint(hWnd,&ps);
//TODO:在此添加任意繪圖代碼...
EndPaint(hWnd,&ps);
break;
caseWM_DESTROY:
PostQuitMessage(0);
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
return0;
}
//「關於」框的消息處理程序。
INT_PTRCALLBACKAbout(HWNDhDlg,UINTmessage,WPARAMwParam,LPARAMlParam)
{
UNREFERENCED_PARAMETER(lParam);
switch(message)
{
caseWM_INITDIALOG:
return(INT_PTR)TRUE;
caseWM_COMMAND:
if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL)
{
EndDialog(hDlg,LOWORD(wParam));
return(INT_PTR)TRUE;
}
break;
}
return(INT_PTR)FALSE;
}
C. C語言如何畫圖
framebuffer(幀緩沖)。
幀的最低數量為24(人肉眼可見)(低於24則感覺到畫面不流暢)。
顯卡與幀的關系:由cpu調節其數據傳輸速率來輸出其三基色的配比。
三基色:RGB(紅綠藍)。
在沒有桌面和圖形文件的系統界面,可以通過C語言的編程來實現在黑色背景上畫圖!
用下面的代碼,在需要的地方(有注釋)適當修改,就能畫出自己喜歡的圖形!
PS:同樣要編譯運行後才能出效果。
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <stdlib.h>
#define RGB888(r,g,b) ((r & 0xff) <<16 | (g & 0xff) << 8 | (b & 0xff))
#define RGB565(r,g,b) ((r & 0x1f) <<11 | (g & 0x3f) << 5 | (b & 0x1f))
int main()
{
int fd = open("/dev/fb0", O_RDWR);
if(fd < 0){
perror("open err. ");
exit(EXIT_FAILURE);
printf("xres: %d ", info.xres);
printf("yres: %d ", info.yres);
printf("bits_per_pixel: %d ", info.bits_per_pixel);
size_t len = info.xres*info.yres*info.bits_per_pixel >> 3;
unsigned long* addr = NULL;
addr = mmap(NULL, len, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);
if(addr == (void*)-1){
perror("mmap err. ");
D. 使用C語言編程畫圖
換賬號再來回答,veket的小號。。。
.......用了ege圖形庫.........純體力活.........
源代碼....demo.cpp.....
/////////////////////////////////////////
// ege0.3.8
// MinGW g++3.4.2
// veket的小號
/////////////////////////////////////////
#include"graphics.h"
#include<stdio.h>
constintYLEN=50;
constintXLEN=40;
constintWIDTH=10*XLEN;
constintHEIGHT=2*YLEN;
constintXWIDTH=640;
constintYHEIGHT=480;
intmain()
{
intx1,y1,x2,y2,x,y;
charstrbuf[100];
inti;
setinitmode(0);
initgraph(XWIDTH,YHEIGHT);
setbkcolor(RGB(0xcc,0xcc,0xcc));
setfillstyle(RGB(0xff,0xff,0xff));
x2=x1=(getmaxx()-WIDTH)/2;
y1=(getmaxy()-2*HEIGHT-YLEN)/2;
y2=y1+HEIGHT+YLEN;
bar(x1,y1,x1+WIDTH,y1+2*YLEN);
setcolor(RGB(0x04,0x04,0x04));
rectangle(x1,y1,x1+WIDTH,y1+2*YLEN);
outtextxy(x1-20,y1-10,"1");
outtextxy(x1-20,y1-10+YLEN,"0");
outtextxy(x1-20,y1-10+2*YLEN,"-1");
for(x=x1,y=y1+2*YLEN+10,i=0;x<=x1+WIDTH;x+=2*XLEN,i+=2)
{
sprintf(strbuf,"%d ",i);
outtextxy(x,y,strbuf);
}
for(x=x1;x<x1+(int)(3*PI*XLEN);x++)
{
y=y1+YLEN-(int)(YLEN*sin(1.0*(x-x1)/XLEN)+0.5);
putpixel(x,y,RGB(0x3e,0x3e,0xff));
}
bar(x2,y2,x2+WIDTH,y2+2*YLEN);
rectangle(x2,y2,x2+WIDTH,y2+2*YLEN);
outtextxy(x2-20,y2-10,"1");
outtextxy(x2-20,y2-10+YLEN,"0.5");
outtextxy(x2-20,y2-10+2*YLEN,"0");
for(x=x2,y=y2+2*YLEN+10,i=0;x<=x1+WIDTH;x+=2*XLEN,i+=2)
{
sprintf(strbuf,"%d ",i);
outtextxy(x,y,strbuf);
}
for(x=x2;x<x2+(int)(PI*XLEN);x++)
{
y=y2+2*YLEN-(int)(2*YLEN*sin(1.0*(x-x1)/XLEN)+0.5);
putpixel(x,y,RGB(0x3e,0x3e,0xff));
}
for(x=x2+(int)(2*PI*XLEN);x<x2+(int)(3*PI*XLEN);x++)
{
y=y2+2*YLEN-(int)(2*YLEN*sin(1.0*(x-x1)/XLEN)+0.5);
putpixel(x,y,RGB(0x3e,0x3e,0xff));
}
getch();
closegraph();
return0;
}
E. C語言程序設計復平面作圖
建模後用gotoxy移動游標位置,然後列印出東西,就可以。我搞過類似的,現在沒有環境。
F. 怎樣用c語言畫圖
你相當於只是畫了10個方塊啊。
你要想連續的話就增加點的數量。
int
num[10]={181,198,207,202,200,197,199,198,215,203};
就是這個。
G. 計算機c語言 流程圖怎麼畫
這里不能傳圖片,我把答案寫成word發在網路文庫里了,名字叫《c語言流程圖》。需要的話可以找找。希望對你有用。
H. 如何用C語言編出圖形界面,有什麼書或教程
如果編譯器是VC或VS,可以參考MFC的教材,如《深入淺出MFC》,這本比較深奧,要是想快速上手,建議從視頻教材開始一步步照著做。
除了MFC,還可以找找關於QT的書籍,QT也是專門用來編圖形界面的。
希望對你有所幫助
I. 數據結構導游圖~~~急~追加分
數據結構視頻教程 清華大學嚴蔚敏主講 全48講 完整版 ASF格式
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=165468
數據結構C語言版視頻教程 全52講完整版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=156467
J. 如何用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;
}