Ⅰ 怎麼用電腦繪制大風車呢
轉眼春天快要來了,和煦的春風也要來了,漂亮的風箏、風車又出現在街頭巷尾,我們就用電腦來畫個大風車,來表達我們的喜悅之情吧!
一、打開「畫圖」軟體,選中工具箱中「多邊形」工具,在繪圖區畫出一個梯形,作為風車的`一個風葉。
二、為使風車更有立體感,選中「曲線」工具,以梯形的一個頂點為端點,在兩條平行邊右斜畫一條曲線,並用「油漆桶」分別填充上自己喜歡的顏色。
三、用「選定工具」選中畫出的這個風葉,按住「Ctrl」鍵,復制其它三個風葉。
四、分別選中這三個風葉,點擊菜單「圖像」----「翻轉」,在彈出的的對話框中,分別選擇「按一定角度翻轉下的90度,180度,270度。
五、去掉「圖像」菜單中「不透明處理」選項前的對勾,把這四個風葉拼在一起。然後選中「橢圓」工具,並設它的前景色為黑色,背景色為紅色,在風葉的中心畫一個圓,這樣風車的扇頁就做好了。
六、選中「矩形」工具,在扇葉旁邊畫出風車手柄,並上顏色。
七、最後用「選定」工具把扇葉放在手柄上。
看!一個漂亮的風車就在你的手中誕生了!趕快拿著它去轉轉吧!
Ⅱ c++編程:.在窗口中畫一個旋轉的風車,要求每個葉片的色不同。 用C++語言編寫!
使每個葉片的顏色變為下一個葉片的顏色或者上一個葉片顏色 這樣就可以轉了
Ⅲ vc中實現所畫風車的旋轉,我用vc++6.0 cpp畫了一個風車 怎麼才能讓它能旋轉起來
//源程序,示例代碼:
//Instance_3_1_.cpp:.
//
/*************************************************************************
在窗口中畫一個旋轉的風車,風車中有三個葉片,顏色分別為紅黃和藍,
葉片外側有一個外接圓。
*************************************************************************/
#include<windows.h>
#include<math.h>
//回調函數聲明
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam);
//初始化窗口類聲明
BOOLInitWindowsClass(HINSTANCEhInstance,char*lpszClassName);
//初始化窗口聲明
BOOLInitWindows(HINSTANCEhInstance,intnCmdShow,char*lpszClassName,char*lpTitle);
WNDCLASSwndclass;//定義一個窗口類
HWNDhwnd;//定義一個窗口句柄
constdoublePi=3.1415926;
intnMaxNumber=20;//葉片循環一周中繪圖的次數
intnNum=0;//記錄當前的順序
intWINAPIWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow)
{
MSGMsg;//定義消息
charlpszClassName[]="風車";//窗口的類名
charlpTitle[]="基本繪圖-旋轉的風車";//窗口標題名
//初始化窗口類
if(!InitWindowsClass(hInstance,lpszClassName))
{
returnFALSE;
}
//初始化窗口
if(!InitWindows(hInstance,nCmdShow,lpszClassName,lpTitle))
{
returnFALSE;
}
//消息循環
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
returnMsg.wParam;//程序終止時將信息返回系統
}
//初始化窗口類定義
BOOLInitWindowsClass(HINSTANCEhInstance,char*lpszClassName)
{
//1、窗口類定義
wndclass.style=0;//窗口類型為默認類型
wndclass.lpfnWndProc=WndProc;//窗口處理函數為WNDPROC
wndclass.cbClsExtra=0;//窗口類無擴展
wndclass.cbWndExtra=0;//窗口實例無擴展
wndclass.hInstance=hInstance;//當前實例句柄
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口的最小化圖標為默認圖標
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口採用箭頭游標
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗口採用白色背景
wndclass.lpszMenuName=NULL;//窗口中無菜單
wndclass.lpszClassName=lpszClassName;//類名為lpClassName
//2、注冊窗口類
if(!RegisterClass(&wndclass))
{//如果注冊失敗則發出警告聲音
MessageBeep(0);
returnFALSE;
}
returnTRUE;
}
//初始化窗口聲明
BOOLInitWindows(HINSTANCEhInstance,intnCmdShow,char*lpszClassName,char*lpTitle)
{
//3、創建窗口
hwnd=CreateWindow(
lpszClassName,
lpTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
600,
450,
NULL,
NULL,
hInstance,
NULL
);
//4、顯示窗口
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
returnTRUE;
}
//回調函數定義
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
HDChDC;//定義設備環境句柄
HPENhPen;//定義畫筆句柄
HBRUSHhBrush;//定義畫刷句柄
PAINTSTRUCTPtStr;//定義包含繪制信息的結構體變數
POINTpCenterPoint;//定義一個圓盡心點的坐標
intnRadious=50;//定義圓的半徑
doublefAngle;//葉片的直邊與水平軸的夾角
switch(message)
{
caseWM_PAINT:
{//處理繪圖消息
hDC=BeginPaint(hwnd,&PtStr);//得到設備句柄
SetMapMode(hDC,MM_ANISOTROPIC);//設置映像模式
SetWindowExtEx(hDC,400,300,NULL);//設置窗口區域(邏輯單位)
SetViewportExtEx(hDC,600,450,NULL);//設置視口區域(物理單位)
SetViewportOrgEx(hDC,300,200,NULL);//設置視口原點坐標為(300,200)
//繪制外圓
hPen=(HPEN)GetStockObject(BLACK_PEN);
SelectObject(hDC,hPen);
Ellipse(hDC,-100,-100,100,100);
//繪制風車的葉片
//1、畫紅色葉片
hBrush=CreateSolidBrush(RGB(255,0,0));
SelectObject(hDC,hBrush);
fAngle=2*Pi/nMaxNumber*nNum;
pCenterPoint.x=(int)(nRadious*cos(fAngle));
pCenterPoint.y=(int)(nRadious*sin(fAngle));
Pie(
hDC,
pCenterPoint.x-nRadious,pCenterPoint.y-nRadious,
pCenterPoint.x+nRadious,pCenterPoint.y+nRadious,
(int)(pCenterPoint.x+nRadious*cos(fAngle)),
(int)(pCenterPoint.y+nRadious*sin(fAngle)),
(int)(pCenterPoint.x+nRadious*cos(fAngle+Pi)),
(int)(pCenterPoint.y+nRadious*sin(fAngle+Pi))
);
//2、畫天藍色葉片
hBrush=CreateSolidBrush(RGB(255,255,0));
SelectObject(hDC,hBrush);
pCenterPoint.x=(int)(nRadious*cos(fAngle+2*Pi/3));
pCenterPoint.y=(int)(nRadious*sin(fAngle+2*Pi/3));
Pie(
hDC,
pCenterPoint.x-nRadious,pCenterPoint.y-nRadious,
pCenterPoint.x+nRadious,pCenterPoint.y+nRadious,
(int)(pCenterPoint.x+nRadious*cos(fAngle+2*Pi/3)),
(int)(pCenterPoint.y+nRadious*sin(fAngle+2*Pi/3)),
(int)(pCenterPoint.x+nRadious*cos(fAngle+Pi+2*Pi/3)),
(int)(pCenterPoint.y+nRadious*sin(fAngle+Pi+2*Pi/3))
);
//2、畫黃色葉片
hBrush=CreateSolidBrush(RGB(0,255,255));
SelectObject(hDC,hBrush);
pCenterPoint.x=(int)(nRadious*cos(fAngle+4*Pi/3));
pCenterPoint.y=(int)(nRadious*sin(fAngle+4*Pi/3));
Pie(
hDC,
pCenterPoint.x-nRadious,pCenterPoint.y-nRadious,
pCenterPoint.x+nRadious,pCenterPoint.y+nRadious,
(int)(pCenterPoint.x+nRadious*cos(fAngle+4*Pi/3)),
(int)(pCenterPoint.y+nRadious*sin(fAngle+4*Pi/3)),
(int)(pCenterPoint.x+nRadious*cos(fAngle+Pi+4*Pi/3)),
(int)(pCenterPoint.y+nRadious*sin(fAngle+Pi+4*Pi/3))
);
nNum++;//當前充數增加1
Sleep(50);//等待0.1秒
InvalidateRect(hwnd,NULL,1);//重繪窗口區域
DeleteObject(hPen);
DeleteObject(hBrush);
EndPaint(hwnd,&PtStr);
break;
}
caseWM_DESTROY:
{
//調用PostQuitMessage發出WM_QUIT消息
PostQuitMessage(0);
}
default:
{
returnDefWindowProc(hwnd,message,wParam,lParam);
}
}
return0;
}