青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 34,comments - 2,trackbacks - 0
一、Windows可以畫直線、橢圓線(橢圓圓周上的曲線)和貝塞爾曲線。
////////////7 個畫線函式是:
(1)畫直線
LineTo    BOOL LineTo(HDC hdc,int nXEnd,int nYEnd);
結合MoveToEx函數使用BOOL MoveToEx(HDC hdc,int X,int Y,LPPOINT lpPoint);Point記錄了舊的坐標點(先前的當前位置)。
///注意:GetCurrentPositionEx (hdc, &pt) ;獲得當前位置。

(2)畫一系列相連的直線。
Polyline    把Point數組的點連接成線。不用當前點做開始點,
PolylineTo  使用當前點做開始點,并將當前的位置設置成最后一根線的終點。
PolyPolyline 畫多組相連的線。

(3)填充矩形
Rectangle 畫一個矩形,并用白色刷子填充、Rectangle(hdc,xleft,ytop,xright,ybottom)
Ellipse   畫一橢圓,并用白色的刷子填充。Ellipse (hdc,xleft,ytop,xright,ybottom)
RoundRect 畫圓角矩形。并用白色的刷子填充 RoundRect(hdc,xL,yT,xR,yB,xC,yC)
 xC,yC是圓角矩形的圓角。
Arc  畫橢圓線。Arc (hdc, xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd,yEnd)
Chord 畫弦弓形Chord(hdc,xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd, yEnd)
Pie 畫餅形圖 Pie(hdc, xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd, yEnd);
ArcTo 和AngleArc 畫橢圓線。

//////多邊形
Polygon(hdc,apt,iCount);  //畫一個多邊形,最后一點與第一點相連。
PolyPolygon(hdc,apt,aiCount,iPolyCount);  //畫多個多邊形。


 

 
(4)貝塞爾曲線,畫貝塞爾曲線
POINY  apt【4】=(起點,第一控制點,第二控制點,終點)
需要注意的是::曲線是起點到終點的連線曲線,控制點(調整點)不在其中、
PolyBezier (hdc,apt,icount)
PolyBezierTo (hdc,apt,icount)。使用當前點為起點
PolyDraw 畫一系列相連的線以及貝塞爾曲線。
對于多條貝塞爾曲線,后一條的起點是前一條的終點。

(5)矩形函數
FillRect(hdc,&rect,hBrush);  //使用指定的畫刷來填充矩形,(不包含(Right,buttom)FrameRect(hdc,&rect,hBrush);//使用畫刷來填充矩形框,不填充矩形,
InvertRect(hdc,&rect);  //使像素翻轉,白變黑,黑變白,綠變紅。

///////對Rect的操作
SetRect(&rect,xLeft,yTop,xRight,yButtom);//賦值
OffsetRect(&rect,x,y);  //沿x,y移動
InflateRect(&rect,x,y); //增減矩形的尺寸。
SetRectEmpty(&rect);  //置0
CopyRect(&A,&B);把B復制到A.
IntersectRect(&A,&B1,&B2);//把B1和B2的交集復制到A.
UnionRect(&A,&B1,&B2);  //取并集
bEmpty=IsRectEmpty(&Rect);//判斷矩形是否為空。
blnRect=PtlnRect(&Rect,point); //判斷點是否在矩形中。


二、映像坐標

1)、視口:設備坐標(像素)
窗口:邏輯坐標,像素、mm、英寸
視口(設備)坐標轉換為窗口(邏輯)坐標:
公式:一般不用記,有專門的函數。
xWindow=(xViewport - xViewOrg) * xWinExt/xViewExt +xWinOrg
yWindow=(yViewport - yViewOrg) * yWinExt/yViewExt +yWinOrg

(xWindow,yWindow) 轉換后的窗口坐標
(xViewport,yViewport)待轉換的視口坐標
(xWinExt,yWinExt)是邏輯座標的視窗范圍;
(xViewExt,yViewExt)是裝置座標的視窗范圍。
(xWinOrg,yWinOrg)是邏輯座標的窗口原點;
(xViewOrg,yViewOrg)是裝置座標的視口原點

2)、設備點轉化為邏輯點
DPtoLP (hdc, pPoints, iNumber);pPoints 結構陣列的指標,而iNumber 是要轉換的點的個數
例如:
GetClientRect (hwnd, &rect) ;
DPtoLP (hdc, (PPOINT) &rect, 2) ;

將邏輯點轉換為裝置點:
LPtoDP (hdc, pPoints, iNumber) ;


3):
SetMapMode(hdc,iMapMode);   //設置映射方式。
默認:MM_TEXT:每個邏輯單位轉換為一個圖素,X正方向向右,Y正方向向下。
原點可以改變,范圍不可改變
SetWindowOrgEx();  //設置設備環境的原點
SetViewprocOrgEx(); //設置客戶區中心
//
//原點和范圍都可以改變、
MM_ANISOTROPIC:邏輯單位轉換成具有任意比例軸的任意單位,用SetWindowExtExSetViewportExtEx函數可指定單位、方向和比例。

//原點可以改變,范圍不可以改變,X的正方面向右,Y的正方向向上。
MM_HIENGLISH:每個邏輯單位轉換為0.001英寸,X的正方面向右,Y的正方向向上。
MM_HIMETRIC:每個邏輯單位轉換為0.01毫米,X正方向向右,Y的正方向向上。
MM_ISOTROPIC:邏輯單位轉換成具有均等比例軸的任意單位,即沿X軸的一個單位等于沿Y軸的一個單位,用和函數可以指定該軸的單位和方向。圖形設備界面(GDI)需要進行調整,以保證X和Y的單位保持相同大?。ó斣O置窗口范圍時,視口將被調整以達到單位大小相同)。
MM_LOENGLISH:每個邏輯單位轉換為0.01英寸,X正方向向右,Y正方向向上。
MM_LOMETRIC:每個邏輯單位轉換為0.1毫米,X正方向向右,Y正方向向上。
MM_TWIPS;每個邏輯單位轉換為打印點的1/20(即1/1400英寸),X正方向向右,Y方向向上。

 


三、GDI  對象

畫筆、刷子、位圖、區域、字體、調色板是可以創建的6種GDI對象。
GetStockObject(obj);獲取對象的句柄。
DeleteObject(obj);  刪除對象。(注意不能在有效的設備描述表中刪除。)
除調色板外,其他對象都是通過SelectObject(hdc,obj);選入設備描述表中。
GetObject(HOBJ,size,lpObj); lpObj可以是下列的結構體。獲取對象信息、
BITMAP       //位圖
DIBSECTION  //位圖
EXTLOGPEN   //畫筆
LOGBRUSH    //刷
LOGFONT     //字體
LOGPEN      //畫筆
(1)畫筆(Pen) windows的默認值:BLACK_PEN
創建:
方法一:hPen=CreatePen(iPenStyle,iWidth,crColor);
iPenStyle的參數:PS_SOLID    實心畫筆
   PS_DASH     破折號畫筆(在iWidth<1有效,否則系統會用實心筆替代)
   PS_DOT     虛線(在iWidth<1有效,否則系統會用實心筆替代)
  PS_DASHDOT  點劃線(在iWidth<1有效,否則系統會用實心筆替代)
  PS_DASHDOTDOT 雙重點劃線(在iWidth<1有效,否則系統會用實心筆替代)
  PS_NULL   空白筆
  PS_INSIDEFRAME  粗實線,當iWidth>1可以使用抖動色(不只是純色)

方法二:LOGPEN logpen   //指定筆顏色、大小、類型的結構體。同上。
 hPen=CreatePenIndirect(&logpen);

(2)字體(Font) 默認值:SYSTEM_FONT
創建:
一:CreateFont
只用到2個參數,其他都為0,例:CreateFont (0, 0, 0, 0, 0, 0, 0, 0, dwCharSet, 0, 0, 0, FIXED_PITCH, NULL)
HFONT CreateFont(
  int nHeight,             // 字符寬度,邏輯單位
  int nWidth,              //
  int nEscapement,         // 斜放置字符串
  int nOrientation,        // 字符傾斜的角度,影響單個字符
  int fnWeight,            // 粗體。0—400標準,700粗體
  DWORD fdwItalic,         // 斜體
  DWORD fdwUnderline,      // 下劃線
  DWORD fdwStrikeOut,      // 刪除線
  DWORD fdwCharSet,        // 1為默認值。指定字體字符集一個字節的值(*不用理會)
  DWORD fdwOutputPrecision,  // 輸出精度*
  DWORD fdwClipPrecision,  // 裁剪精度*
  DWORD fdwQuality,        // 期望匹配字體*
  DWORD fdwPitchAndFamily,  // 字體族*
  LPCTSTR lpszFace         // 字樣*
);
                                 
字體:
SYSTEM_FONT
SYSTEM_FIXED_FONT
OEM_FIXED_FONT

ANSI_FIXED_FONT、
ANSI_VAR_FONT
DEVICE_DEFAULT_FONT

其中: WM_INPUTLANGCHANGE: dwCharSet = wParam ;
二:LOGFONT logfont;
    CreateFontIndirect(&logfont);

(3)刷子(Brush) 默認值::WHITE_BRUSH
系統的刷子: WHITE_BRUSH 
  LTGRAY_BRUSH    亮灰
  GRAY_BRUSH 灰
                DKGRAY_BRUSH 黑灰
  BLACK_BRUSH
創建:
一:hBrush=CreateSolidBrush(crColor);
二:hBrush=CreateHatchBrush(iHatchStyle,crColor);//創建有影線的刷子填充部分為陰影
其中:iHatchStyle的參數如下:
 HS_BDIAGONAL   45度的斜線、
 HS_CROSS        十字型的線、
 HS_DIAGCROSS ×型
 HS_FDIAGONAL  135度斜線
 HS_HORIZONTAL   水平
 HS_VERTICAL  垂直 
三:LOGBRUSH  logbrush
    CreateBrushIndirect(&logbrush);
四: hBrush=CreatePatternBrush(HBITMAP hbmp);//創建位圖的刷子、
五:hBrush=CreateDIBPatternBrushPt;//創建DIB位圖的刷子。
    CreateDIBPatternBrush,

 


(4)位圖(Bitmap)默認值:None(無);
 
CreateBitmap,
CreateBitmapIndirect,
CreateCompatibleBitmap,
CreateDIBitmap,
CreateDIBSection
CreateSolidBrush
第一種::
HBITMAP CreateBitmap(
  int nWidth,         // 寬
  int nHeight,        // 高
  UINT cPlanes,       // 顏色板的數目
  UINT cBitsPerPel,   // 沒像素的位數。
  CONST VOID *lpvBits // 指向顏色數據數組指針。這些顏色數據用來設置矩形區域內像素的顏色。矩形區域中的每一掃描線必須是雙字節的整數倍(不足部分以0填充)。如果該參數為NULL,那么就表示沒有定義新位圖。
);

//簡化版
HBITMAP CreateCompatibleBitmap( HDC hdc,     int nWidth,   int nHeight  );


//第二種
HBITMAP CreateBitmapIndirect(&bitmap);bitmap是BITMAP結構體

(5)區域(Region)區域是對顯示器上一個范圍的描述,這個范圍是矩形、多邊形和橢圓的組合,把區域選進設備描述表,區域可以用于繪制和剪裁。
作用:iRgnType=CombineRgn(hRgn,hRgn1,hRgn2,iCombine);
iCombine的參數:
RGN_AND  兩個源區域的公共部分
RGN_OR   全部
RGN_XOR  除去公共部分。
RGN_DIFF hRgn1不在hRgn2的部分
RGN_COPY hRgn1的全部。(忽略hRgn2);
iRgnType的參數:
NULLREGION     得到空區域
SIMPLEREGION   得到簡單的矩形、橢圓或多邊形
COMPLEXREGION   多個多邊形、矩形、橢圓的組合
ERROR  出錯
創建:
一:創建矩形區域:
    hRgn = CreateRectRgn (xLeft, yTop, xRight, yBottom) ;
    hRgn = CreateRectRgnIndirect (&rect) ;
二: 創建橢圓剪裁區域;
   hRgn = CreateEllipticRgn (xLeft, yTop, xRight, yBottom) ;//
   hRgn = CreateEllipticRgnIndirect (&rect) ;
三;創建多邊形剪裁區域
 hRgn = CreatePolygonRgn (&point, iCount, iPolyFillMode) ;

///////////////////////////////////////////////////////////
矩形與區域的剪裁
對于矩形;
InvalidateRect (hwnd, NULL, TRUE) ;//使矩形無效
GetUpdateRect 來取得失效矩形的座標或WM_PAINT中從PAINTSTRUCT結構中得到
ValidateRect使有效
對于區域:
InvalidateRgn (hwnd, hRgn, bErase) ;
ValidateRgn (hwnd, hRgn) ;


SelectObject(hdc,hRgn);  或SelectClipRgn(hdc,hRgn);選進設備描述表
ExcludeClipRect用於將一個矩形從剪裁區域里排除掉,
IntersectClipRect 用於建立一個新的剪裁區域,它是前一個剪裁區域與一個矩形的交,OffsetClipRgn 用於將剪裁區域移動到顯示區域的另一部分。


四、設備描述表

理解1:設備描述表中包含許多確定的GDI函數如何在設備上工作的當前屬性。這些屬性允許傳遞給GDI函數的參數只包含其實坐標或者尺寸信息,而不包含Windows在設備上顯示對象時需要的所以其他信息、

理解2:一個設備描述表通常指一個物理顯示設備。如視頻顯示器或打印機。

理解3:設備描述表(簡稱DC)實際上是GDI內部保存的數據結構。有些值是圖形化的“屬性”,這些屬性定義了一些GDI繪圖函數的工作,例如:文本顏色,文本的背景、TextOut函數的X坐標,y坐標映射到窗口客戶區的方式,還有windows顯示的字體、

//////////////////////////////////獲取句柄hdc

(1)注意這不能使無效區域變的有效
hdc=GetDC(hwnd);
//////
ReleaseDC(hwnd,hdc);

(2)在處理WM_PAINT消息使使用。能使無效區域變的有效、重繪。
hdc=BeginPaint(hwnd,&ps);
/////////
EndPaint(hwnd,&ps);

(3)能獲得非客戶區的繪制消息。包括窗口的標題欄,菜單欄,和滾動條、框架等。
在WM_NCPAINT中處理、
hdc=GetWindowDC(hwnd);
//////
ReleaseDC(hwnd,hdc);

(4)通用獲得DC的方法。視頻顯示器或者打印機上的DC.
hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);   //獲得整個屏幕的dc
//////////////
DeleteDC(hdc);

(5)獲得一個dc,其參數與CreateDC的參數相同。但是不能用這個信息環境句柄往設備描述表上寫東西。////特別 注意。
hdc=CreateIC(TEXT("DISPLAY"),NULL,NULL,NULL);
/////////
DeleteDC (hdc);


(6)可以把位圖選進內部設備描述表。然后用GDI 函數在位圖上繪畫。
hdcMem=CreateCompatibleDC(hdc); //位圖選進內部設備描述表
///////////
DeleteDC (hdcMem);

(7)獲取元文件的設備描述表來創建元文件。
hdcMeta=CreateMetaFile(pszFilename);
//////////
hmf=ColseMetaFile(hdcMeta)

/////////////////////獲取信息
(8)獲取視頻顯示器的尺寸,色彩等信息。
int iValue=GetDeviceCaps(hdc,ilndex);

///////////////////保存設備描述表。
(9)
SaveDC(hdc);可以保存多次
RestoreDC(hdc,-1);恢復DC



五、設備描述表屬性

1\一些空間隔的填充。如點和虛線之間的間隔填充。
背景模式:使用SetBkMode(hdc,iBkMode)修改
(1)OPAQUE(系統默認值),間隔使用背景顏色填充。
       修改:SetBkColor(hdc,crColor);  //修改背景色
  GetBkColor(hdc);  獲取背景色
(2)TRANSPARENT  不填充間隔 ,不擦除背景,透明模式
  

2\繪圖方式:
用畫筆進行繪圖實際是畫筆像素與目標位置處原來像素之間的某種布爾值運算。
默認值::R2_COPYPEN;
修改:
SetROP2(hdc,iDrawMode);
獲?。?br />iDrawMode=GetROP2(hdc);


posted on 2011-09-13 16:12 Yu_ 閱讀(3335) 評論(0)  編輯 收藏 引用 所屬分類: Windows程序設計
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美大胆人体视频| 老司机久久99久久精品播放免费| 亚洲精品欧美在线| 午夜久久tv| 欧美视频一区二区三区…| 今天的高清视频免费播放成人| 欧美成人黑人xx视频免费观看| 国产精品一区二区你懂得 | 欧美视频国产精品| av成人免费在线| 一区二区三区不卡视频在线观看 | 欧美激情 亚洲a∨综合| 这里只有精品视频| 欧美三级网页| 亚洲女人天堂成人av在线| 日韩视频在线免费| 国产精品成人免费精品自在线观看| 亚洲色诱最新| 在线亚洲欧美视频| 欧美亚洲一区二区在线| 国产精自产拍久久久久久蜜 | 午夜精品99久久免费| 国产精品午夜av在线| 欧美在线三区| 亚洲一级二级在线| 亚洲欧美一区二区激情| 亚洲欧美日韩精品综合在线观看| 国产模特精品视频久久久久| 久久精品人人做人人爽| 久久亚洲综合色| 日韩视频免费| 亚洲一区二区三区视频播放| 国产日韩专区在线| 欧美不卡视频| 欧美日本乱大交xxxxx| 亚洲欧美日韩人成在线播放| 亚洲欧美激情视频在线观看一区二区三区| 国产精品一卡| 欧美成人三级在线| 久久爱www久久做| 国产一区二区日韩精品欧美精品 | 欧美成ee人免费视频| 亚洲精品少妇| 午夜免费在线观看精品视频| 伊人狠狠色j香婷婷综合| 久久精品视频在线播放| 久久超碰97人人做人人爱| 曰韩精品一区二区| 亚洲精品日产精品乱码不卡| 欧美日韩一区二区三区免费看| 国产精品久久久久久久久果冻传媒| 亚洲女性喷水在线观看一区| 欧美一区二区在线免费播放| 亚洲精品日日夜夜| 亚洲欧美日韩高清| 亚洲蜜桃精久久久久久久| 中文av字幕一区| 99国产精品| 国模私拍一区二区三区| 一区三区视频| 亚洲一区二区在线免费观看视频| 曰韩精品一区二区| 亚洲免费中文字幕| 亚洲免费不卡| 久久久国产成人精品| 亚洲永久精品大片| 免费成人毛片| 久久免费国产| 国产精品永久免费视频| 亚洲日本免费| 在线观看国产精品网站| 欧美有码在线视频| 欧美激情精品久久久久久大尺度 | 亚洲精品美女免费| 性做久久久久久| 蜜臀久久99精品久久久久久9 | 一区二区不卡在线视频 午夜欧美不卡'| 国产亚洲精品久久久久久| 夜夜嗨av一区二区三区网页| 亚洲国产成人tv| 久久精品二区| 久久久久久9| 国产精品入口夜色视频大尺度| 亚洲经典视频在线观看| 在线观看国产日韩| 老鸭窝91久久精品色噜噜导演| 亚洲精选视频免费看| 久热爱精品视频线路一| 亚洲精品韩国| 美女黄毛**国产精品啪啪| 亚洲天堂成人| 亚洲毛片av| 国内精品久久久久久久影视麻豆| 免费在线观看精品| 欧美精品三级在线观看| 中文有码久久| 欧美午夜电影网| 一二三区精品| 亚洲欧美日韩视频一区| 欧美午夜视频一区二区| 一区二区精品在线| 亚洲欧美日韩在线一区| 国产精品人人爽人人做我的可爱 | 欧美影视一区| 欧美一级免费视频| 国产欧美日韩一区二区三区在线| 亚洲少妇在线| 久久不见久久见免费视频1| 午夜欧美大片免费观看| 国产免费亚洲高清| 久久久久久九九九九| 欧美激情在线观看| 亚洲少妇中出一区| 国产日韩精品一区二区三区 | 久久精品国产一区二区三区免费看| 久久综合九色| 亚洲美女视频| 国产精品久久久久久久久久免费| 亚洲综合日韩在线| 久久亚洲不卡| 99热在这里有精品免费| 一本色道久久综合亚洲91| 亚洲欧美日韩综合一区| 激情视频亚洲| 欧美日本一区二区三区| 亚洲欧美日产图| 欧美激情欧美激情在线五月| 亚洲网址在线| 乱人伦精品视频在线观看| 极品裸体白嫩激情啪啪国产精品| 欧美激情综合网| 亚洲视频精品在线| 欧美猛交免费看| 亚洲特级毛片| 影音先锋成人资源站| 欧美日韩美女| 久久久噜噜噜| 亚洲一区二区在线| 亚洲国产日韩欧美一区二区三区| 亚洲淫片在线视频| 亚洲激情一区| 国产一区清纯| 欧美国产视频日韩| 久久一区免费| 亚洲欧美激情四射在线日 | 亚洲精品免费一二三区| 国产精品你懂的在线| 欧美激情国产精品| 午夜欧美精品久久久久久久| 国产精品日韩在线| 欧美91精品| 欧美在线你懂的| 亚洲美女视频| 欧美激情精品久久久久久蜜臀 | 亚洲欧洲日产国产综合网| 国产乱码精品1区2区3区| 欧美激情国产日韩| 蜜桃av久久久亚洲精品| 欧美一区二区视频免费观看| 欧美性感一类影片在线播放 | 久久亚洲春色中文字幕| 亚洲欧美国产精品桃花| 最新国产成人在线观看| 狠狠色伊人亚洲综合成人| 国产精品欧美风情| 欧美日韩99| 欧美大片一区| 免费在线看成人av| 韩国一区二区在线观看| 国产乱码精品一区二区三区不卡| 欧美日韩国产成人在线免费| 欧美jizzhd精品欧美巨大免费| 久久精品国产久精国产思思| 午夜精品影院在线观看| 午夜精品久久久久久久99黑人| 亚洲天堂网在线观看| 在线亚洲高清视频| 亚洲午夜一区二区| 亚洲综合丁香| 欧美一级视频一区二区| 欧美一区二区三区免费看| 午夜精彩国产免费不卡不顿大片| 亚洲一区二区三区精品视频| 亚洲一区二区三区影院| 亚洲欧美日韩综合| 欧美一区二粉嫩精品国产一线天| 久久久久久久国产| 裸体一区二区三区| 欧美激情一区二区| 亚洲精品一区中文| 在线视频亚洲一区| 午夜欧美大尺度福利影院在线看| 欧美在线观看一区二区| 久久久www成人免费精品| 欧美一区二区观看视频| 国产在线欧美| 亚洲国产日韩欧美在线图片| 亚洲精品一区在线| 亚洲一区免费网站| 久久精品综合|