遍匈 / Windows園殻 / 5、夕侘児粥 /

眉、Windows夕崧侃尖!鮫泣才?(唄毘櫛爆?)

仝爆樫々宸倖簡貫念峺議頁匯頭直遊、崍討賜宀署奉?喘栖壓崕貧鮫爆?。曳泌傍?泌惚艇嗤匯乂音揖夕泣?艇?勣壓万断岻寂鮫匯訳爆??坪峨賜宀翌峨??艇遍枠繍宸乂泣宙壓紙夕崕貧?隼朔?繍爆樫協壓宸乂泣貧?旺喘忍永冽彭爆樫汎彭宸乂泣淀爆議圭?鮫爆?。

輝隼?扮崛書晩?爆樫厮将方僥巷塀晒阻。嗤載謹嶽音揖議爆樫巷塀?万断光嗤認拍。唄毘櫛爆?頁柴麻字殻會譜柴嶄喘誼恷鴻議爆樫巷塀岻匯?万頁岷欺恷除嘉紗欺荷恬狼由蚊肝議夕侘屶隔嶄議。壓鎗噴定旗Renault廿概巷望序佩阻喇返垢譜柴概悶?勣喘欺娚輿?欺柴麻字絹廁譜柴議廬延。麿断俶勣匯乂方僥垢醤?遇Pierm Bezier孀欺阻匯耗巷塀?恷朔?塋廠汶睫弭?塀哘原宸劔議垢恬掲械嗤喘。

緩朔?屈略議唄毘櫛爆?撹阻柴麻字夕僥嶄恷嗤喘議爆??壓岷?才蓉垈岻朔?。壓PostScript嶄?侭嗤爆?脅喘唄毘櫛爆?燕幣?蓉垈?喘唄毘櫛爆?栖影除。唄毘櫛爆?匆喘噐協吶PostScript忖悶議忖憲態勢?TrueType聞喘匯嶽厚酒汽厚酔堀議爆樫巷塀?。

匯訳屈略議唄毘櫛爆?喇膨倖泣協吶?曾倖極泣才曾倖陣崙泣。爆?議極泣壓曾倖極泣貧?陣崙泣祥挫崧仝甘墳々匯劔委爆?貫曾倖極泣寂議岷?侃性恠。宸匯泣辛參喇久和議BEZIER札強住霧殻會恂竃恷挫議婢幣?泌殻會5-4侭幣。

殻會5-4 BEZIER
 
BEZIER.C
 
/*-----------------------------------------------------------------------
 
 BEZIER.C -- Bezier Splines Demo
 
 (c) Charles Petzold, 1998
 
------------------------------------------------------------------------*/
 
#include <windows.h>
 
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
 
 PSTR szCmdLine, int iCmdShow)
 
{
 
 static TCHAR szAppName[] = TEXT ("Bezier") ;
 
 HWND hwnd ;
 
 MSG msg ;
 
 WNDCLASS wndclass ;
 
 wndclass.style = CS_HREDRAW | CS_VREDRAW ;
 
 wndclass.lpfnWndProc= 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= szAppName ;
 
 
 
 if (!RegisterClass (&wndclass))
 
 {
 
 MessageBox (NULL, TEXT ("Program requires Windows NT!"),
 
 szAppName, MB_ICONERROR) ;
 
 return 0 ;
 
 }
 
 
 
 hwnd = CreateWindow (szAppName, TEXT ("Bezier Splines"),
 
 WS_OVERLAPPEDWINDOW,
 
 CW_USEDEFAULT, CW_USEDEFAULT,
 
 CW_USEDEFAULT, CW_USEDEFAULT,
 
 NULL, NULL, hInstance, NULL) ;
 
 
 
 ShowWindow (hwnd, iCmdShow) ;
 
 UpdateWindow (hwnd) ;
 
 
 
 while (GetMessage (&msg, NULL, 0, 0))
 
 {
 
 TranslateMessage (&msg) ;
 
 DispatchMessage (&msg) ;
 
 }
 
 return msg.wParam ;
 
}
 
void DrawBezier (HDC hdc, POINT apt[])
 
{
 
 PolyBezier (hdc, apt, 4) ;
 
 MoveToEx (hdc, apt[0].x, apt[0].y, NULL) ;
 
 LineTo (hdc, apt[1].x, apt[1].y) ;
 
 
 
 MoveToEx (hdc, apt[2].x, apt[2].y, NULL) ;
 
 LineTo (hdc, apt[3].x, apt[3].y) ;
 
}
 
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 
{
 
 static POINT apt[4] ;
 
 HDC hdc ;
 
 int cxClient, cyClient ;
 
 PAINTSTRUCT ps ;
 
 switch (message)
 
 {
 
 case WM_SIZE:
 
 cxClient = LOWORD (lParam) ;
 
 cyClient = HIWORD (lParam) ;
 
 
 
 apt[0].x = cxClient / 4 ;
 
 apt[0].y = cyClient / 2 ;
 
 
 
 apt[1].x = cxClient / 2 ;
 
 apt[1].y = cyClient / 4 ;
 
 
 
 apt[2].x = cxClient / 2 ;
 
 apt[2].y = 3 * cyClient / 4 ;
 
 
 
 apt[3].x = 3 * cxClient / 4 ;
 
 apt[3].y = cyClient / 2 ;
 
 
 
 return 0 ;
 
 case WM_LBUTTONDOWN:
 
 case WM_RBUTTONDOWN:
 
 case WM_MOUSEMOVE:
 
 if (wParam & MK_LBUTTON || wParam & MK_RBUTTON)
 
 {
 
 hdc = GetDC (hwnd) ;
 
 SelectObject (hdc, GetStockObject (WHITE_PEN)) ;
 
 DrawBezier (hdc, apt) ;
 
 
 
 if (wParam & MK_LBUTTON)
 
 {
 
 apt[1].x = LOWORD (lParam) ;
 
 apt[1].y = HIWORD (lParam) ;
 
 }
 
 
 
 if (wParam & MK_RBUTTON)
 
 {
 
 apt[2].x = LOWORD (lParam) ;
 
 apt[2].y = HIWORD (lParam) ;
 
 }
 
 
 
 SelectObject (hdc, GetStockObject (BLACK_PEN)) ;
 
 DrawBezier (hdc, apt) ;
 
 ReleaseDC (hwnd, hdc) ;
 
 }
 
 return 0 ;
 
 case WM_PAINT:
 
 InvalidateRect (hwnd, NULL, TRUE) ;
 
 
 
 hdc = BeginPaint (hwnd, &ps) ;
 
 
 
 DrawBezier (hdc, apt) ;
 
 
 
 EndPaint (hwnd, &ps) ;
 
 return 0 ;
 
 
 
 case WM_DESTROY:
 
 PostQuitMessage (0) ;
 
 return 0 ;
 
 }
 
 return DefWindowProc (hwnd, message, wParam, lParam) ;
 
}
 

喇噐宸倖殻會勣喘欺匯乂壓及鈍嫗嘉讐議報炎侃尖圭塀?侭參厘音壓宸戦網胎万議坪何塰恬?音狛?宸匆頁酒汽議??遇頁喘宸倖殻會栖糞刮來仇荷忿唄毘櫛爆?。壓宸倖殻會嶄?曾倖競泣譜協壓?塋焦瘕魑追蕨他嗽弌?靡厠屍?1/4才3/4侃議了崔?曾倖陣崙泣辛參個延?梓廖報炎恣囚賜嘔囚旺溶強報炎辛參蛍艶個強曾倖陣崙泣岻匯。夕5-13頁匯倖灸侏議箭徨。

茅阻唄毘櫛爆?云附?殻會珊貫及匯倖陣崙泣?恣円議及匯倖極泣?匆出恂蝕兵泣?鮫匯訳岷??旺貫及屈倖陣崙泣?嘔円議極泣鮫匯訳岷?。

喇噐和中叱倖蒙泣?唄毘櫛爆?壓柴麻字絹廁譜柴嶄掲械嗤喘。遍枠?将狛富楚膳楼?祥辛參委爆?距屁欺嚥?勣議侘彜掲械俊除。


凪肝?唄毘櫛爆?掲械挫陣崙。斤噐嗤議爆樫嶽窃栖傍?爆?音将狛販採匯倖協吶乎爆?議泣。唄毘櫛爆?悳頁喇凪曾倖極泣蝕兵才潤崩議?宸頁壓容擬唄毘櫛巷塀扮侭恂議邪譜岻匯?。総翌?嗤乂侘塀議爆樫巷塀嗤謎呟泣?壓宸乂泣侃爆?迫?涙博垓?宸壓柴麻字絹廁譜柴嶄宥械頁載音栽癖議。並糞貧?唄毘櫛爆?悳頁鞭尫噐匯倖膨円侘?出恂仝郵淫々??宸倖膨円侘喇極泣才陣崙泣銭俊遇撹。

及眉倖蒙泣膚式極泣才陣崙泣岻寂議購狼。爆?悳頁嚥及匯倖陣崙泣欺軟泣議岷?屢俳?旺隠隔揖匯圭??揖扮?匆嚥及屈倖陣崙泣欺嶮泣議岷?屢俳?旺隠隔揖匯圭?。宸頁喘噐容擬唄毘櫛巷塀扮侭恂議総翌曾倖邪譜。

及膨?唄毘櫛爆?宥械曳熟醤嗤胆湖。厘岑祇宸頁匯倖麼鉱得勺議諒籾?音狛?旺掲峪嗤厘嘉宸劔?。

壓32了議Windows井云岻念?艇駅倬旋喘Polyline栖徭失秀羨唄毘櫛爆??旺拝珊俶勣岑祇和中議唄毘櫛爆?議歌方圭殻。軟泣頁( x0,y0)?嶮泣頁( x3,y3)?曾倖陣崙泣頁(x1,y1)才(x2,y2)?昧彭t議峙貫0欺1議延晒?祥辛參鮫竃爆??

x(t) = (1 - t)3 x0 + 3t (1 - t)2 x1 + 3t2 (1 - t) x2 + t3 x3
 
y(t) = (1 - t)3 y0 + 3t (1 - t)2 y1 + 3t2 (1 - t) y2 + t3 y3
 

壓Windows 98嶄?艇音俶勣岑祇宸乂巷塀。勣鮫匯訳賜謹訳銭俊議唄毘櫛爆??峪俶柵出?

PolyBezier (hdc, apt, iCount) ;
 

PolyBezierTo (hdc, apt, iCount) ;
 

曾嶽秤趨和?apt脅頁POINT潤更議方怏。斤PolyBezier?念膨倖泣?梓孚乏會?公竃唄毘櫛爆?議軟泣、及匯倖陣崙泣、及屈倖陣崙泣才嶮泣。緩朔議耽匯訳唄毘櫛爆?峪俶公竃眉倖泣?咀葎朔匯訳唄毘櫛爆?議軟泣祥頁念匯訳唄毘櫛爆?議嶮泣?泌緩窃容。iCount歌方吉噐1紗貧艇侭紙崙議宸乂遍硫屢俊爆?訳方議眉蔚。

PolyBezierTo痕方聞喘朕念泣恬葎及匯倖軟泣?及匯訳參式朔偬議唄毘櫛爆?脅峪俶勣公竃眉倖泣。輝痕方勧指扮?朕念泣譜協葎恷朔匯倖嶮泣。

匯泣戻幣?壓鮫匯狼双屢銭議唄毘櫛爆?扮?峪嗤輝及匯訳唄毘櫛爆?議及屈倖陣崙泣、及匯訳唄毘櫛爆?議嶮泣?匆祥頁及屈訳爆?議軟泣?才及屈訳唄毘櫛爆?議及匯倖陣崙泣?來屢購扮?匆祥頁傍宸眉倖泣壓揖匯訳岷?貧扮?爆?壓銭俊泣侃嘉頁高錆議。

AltStyle によって変換されたページ (->オリジナル) /