導航:首頁 > 文件教程 > gdi頭文件

gdi頭文件

發布時間:2023-02-14 17:13:38

㈠ MFC GDI+ effect class 如何使用

gdiplus.h裡面也只是包含了一些頭文件
GDI+是一套的跟GDI一套類似裡面也有Pen,Brush,Color等繪圖結構Gdi+裡面的參數雖然跟GDI一樣但是是不同的類Gdi+完全拋棄了GDI
裡面的類型你要用GDI+必須有3個條件
1一套類庫不只是gdiplus.h一共有32個頭文件
放到vc6\vc98\mfc\src\include下
2 gdiplus.lib你已經有了放到library下
3 操作系統是XP以上或則你的系統目錄下有gdiplus.dll;

基本條件有了就可以編程了
在stdAfx.h下

#define ULONG_PTR unsigned long*
#include "GDI\GdiPlus.h"
using namespace Gdiplus;
#endif
#pragma comment(lib,"gdiplus.lib")

ULONG_PTR是GDI初始化函數需要的類型
在使用前必須初始化網路編程一樣。
建議放到InitiInstance下
GdiplusStartu(ULONG_PTR* , GdiplusStartupInput* ,
第3個參數設置NULL);
注意第一個參數設置為公共成員變數在退出函數里要釋放需要這個參數。
在OnDestroy裡面加入釋放參數
GdiplusShutdown(ULONG_PTR);參數就是上面第一變數

Graphics 對象==CDC
一個實例比如
Graphics graphics(m_hWnd);

Image image("PatchName.png");

graphics.DrawImage(&image,0,0,image.GetWidth(),image.GetHeight());

㈡ vb 如何利用GDI+把程序內所有字體消鋸齒

「消除鋸齒」是指對繪制的圖形和文本的粗糙邊緣進行平滑處理以改進它們的外觀或可讀性。GDI+
既可以呈現高質量的消除鋸齒的文本,也可以呈現低質量文本。GDI+提供多種文本呈現的質量等級。通常,呈現的質量越高,所需的處理時間越長。
質量等級是Graphics類的一個屬性。若要設置質量等級,需要調用Graphics對象的SetTextRenderingHint方法。該方法接受一個TextRenderingHint枚舉成員之一,該枚舉定義在頭文件Gdiplusenums.h中。
GDI+
既提供傳統的
AntiAlias,也提供一種基於
Microsoft®
ClearType®
顯示技術的新型
AntiAlias,後者只在Windows
XP

Windows
Server
2003中才可用。它可改善具有數字化界面的彩色
LCD
監視器(例如便攜機的監視器和高質量純平台式顯示器)的可讀性。還可稍微改善
CRT
屏幕的可讀性。
ClearType

LCD
條紋的方向和順序有關。目前,ClearType
只在順序為
RGB
的垂直條紋中實現。如果您使用的是顯示器可面向任何方向的
Tablet
PC,或者如果您使用的屏幕可從橫向旋轉到縱向,則這可能是需要考慮的事項。
下面的代碼示例以兩種不同的質量設置繪制文本:
FontFamily
fontFamily(L"Times
New
Roman");
Font
font(&fontFamily,
32,
FontStyleRegular,
UnitPixel);
SolidBrush
solidBrush(Color(255,
0,
0,
255));
WCHAR
string1[]
=
L"SingleBitPerPixel";
WCHAR
string2[]
=
L"AntiAlias";
graphics.SetTextRenderingHint();
graphics.DrawString(string1,
-1,
&font,
PointF(10.0f,
10.0f),
&solidBrush);
graphics.SetTextRenderingHint(TextRenderingHintAntiAlias);
graphics.DrawString(string2,
-1,
&font,
PointF(10.0f,
60.0f),
&solidBrush);

㈢ vc6怎樣使用gdi+

去找這本書看看吧,[Visual.C++.範例開發大全].陳國建等.掃描版(ED2000.COM).pdf,

給你第六章源碼vc6的

gdi+的頭文件lib文件在gdiplus文件夾

㈣ GDI的GDI的特點

GDI 是C++中常用的一種圖形圖像工具,VB、Delphi等語言也移植了GDI ,.net的諸多語言甚至完全採用GDI作為繪制其界面。
在Windows系統下,幾乎所有的API都是直接針對C語言的,除C/C++可直接使用這些API外,其它各種語言都必須移植這些API方法,而唯獨GDI,微軟提供的Gdiplus頭文件,從類型定義到方法介面,都是針對C++寫的,這就使得C語言沒法使用這些面向對象的方法,即使是GDI提供的原始API,如果不重新定義其參數中眾多的數據類型,C語言也是沒法使用的。

㈤ VC++如何讀取並顯示JPG文件

用GDI+
添加Gdiplus.lib到工程中

頭文件中添加
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long* //定義類型

#include "Gdiplus.h" //包含gdi頭文件
using namespace Gdiplus; //命名空間

添加類成員變數

GdiplusStartupInput m_gdiPlusInPut;
ULONG_PTR m_gdiPlusToken;

構造函數中初始化GDI+

GdiplusStartup( &m_gdiPlusToken, &m_gdiPlusInPut, NULL );

析構函數中 //銷毀GDI+

GdiplusShutdown(gdiplusToken);

OnPaint()中:

//CDialog::OnPaint();
CPaintDC dc( this );

//建立圖形對象
Graphics mGraphics( dc.GetSafeHdc() );

//裝入圖像文件

Image img( L"./res/test.jpg", TRUE );

//在指定區域pdestPoints顯示圖像 (根據背景大小按比例縮放)

CRect rcClient;
GetClientRect( &rcClient );

BOOL bWidth = rcClient.Width() / img.GetWidth() > rcClient.Height() / img.GetHeight();
if ( bWidth )
{
mGraphics.DrawImage( &img, 0, 0, rcClient.Width(), rcClient.Width() * img.GetHeight() / img.GetWidth() );
}
else
{
mGraphics.DrawImage(&img, 0, 0, rcClient.Height() * img.GetWidth() / img.GetHeight(), rcClient.Height() );
}

//原始大小
mGraphics.DrawImage(&img, 0, 0, img.GetWidth(), img.GetHeight() );

㈥ gdi+函數庫,應該怎樣操作或調用頭文件

就報出100多個錯誤,那是怎麼回事- -,是我的電腦裡面沒GDI嗎?不可能沒有,那是Windows必備的dll。你加了我那三段語句了嗎?怎麼就一個:#include <GdiPlus.h>。新建的WIN32程序。不加這3句話運行沒問題,在頭文件中加了這3句話200多個錯誤了。最前面要加#include<windows.h>,它是最基本的頭文件。記住:包含頭文件,是要講先後順序的。一般windows.h都要在最前面。好嗎?同學給的,採納吧!!!!

㈦ GDI+中drawtriangle函數在哪個頭文件中

---我記得是這個
using System.Drawing;
----如果不行就加這個
using System.Drawing.Drawing2D;

㈧ GDI+ 旋轉後如何獲取旋轉後的圖像

剛開始使用的是gdi保存cview中的繪圖內容,但是發現由於保存的是點陣圖所以保存下來的圖片的大小很大,每個大概有2M左右,所以在網上找解決方法,選擇使用GDI+來保存繪圖為圖片,大小為20K左右,主要過程如下
一,添加gdi相關文件
1,從網路上下載gdi頭文件和庫文件 http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip
2,解壓之後將將其中的Includes和Lib中的文件拷到vc目錄下的Includes和Lib文件夾中;
3,將以下代碼加入StdAfx.h頭文件中:
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#include "GdiPlus.h "
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib ")
#endif
4,將gdiplus.dll考到debug和release目錄下
二,在程序中載入庫
1,在C*APP頭文件中添加兩個變數
GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;
2,在C*APP文件 的InitInstance函數中加入初始化GDI+的函數:
GdiplusStartup(&m_gdiplusToken, &m_gdiplusStartupInput, NULL);
3,在C*APP文件 中添加ExitInstance()虛函數
在ExitInstance()虛函數中添加
GdiplusShutdown(m_gdiplusToken);
三使用GDI+ GDI+的使用很方便代碼如下
CDC MemDC; //首先定義一個顯示設備對象
CBitmap MemBitmap;//定義一個點陣圖對象
MemBitmap.CreateCompatibleBitmap(pdc,nWidth,nHeight);
//隨後建立與屏幕顯示兼容的內存顯示設備
MemDC.CreateCompatibleDC(pdc);
//這時還不能繪圖,因為沒有地方畫 ^_^
//下面建立一個與屏幕顯示兼容的點陣圖,至於點陣圖的大小嘛,可以用窗口的大小
//將點陣圖選入到內存顯示設備中
//只有選入了點陣圖的內存顯示設備才有地方繪圖,畫到指定的點陣圖上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
//先用背景色將點陣圖清除干凈,這里我用的是白色作為背景
//你也可以用自己應該用的顏色
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));

CString filename;//名字
這里用MemDC繪圖//
MemDC.move(0,0);
MemDC.lineto(100,100);
USES_CONVERSION; //將cstring轉化為const wchar*
WCHAR* pBuf = T2W((LPCTSTR)filename);

//這里就是將內存中的繪圖轉化成圖片了
Bitmap bm((HBITMAP)MemBitmap, NULL);//定義bitmap
CLSID pngClsid;
GetEncoderClsid(L"image/jpeg", &pngClsid);
bm.Save(pBuf, &pngClsid, NULL);
MemDC.DeleteDC();
其中GetEncoderClsid(const WCHAR* format, CLSID* pClsid)代碼如下

int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
UINT num= 0;
UINT size= 0;
ImageCodecInfo* pImageCodecInfo= NULL;
GetImageEncodersSize(&num, &size);
if(size== 0)
{
return -1;
}
pImageCodecInfo= (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo== NULL)
{
return -1;
}
GetImageEncoders(num, size, pImageCodecInfo);
for(UINT j=0; j< num; ++j)
{
if(wcscmp(pImageCodecInfo[j].MimeType, format)== 0)
{
*pClsid= pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
return j;
}
}
free(pImageCodecInfo);
return -1;
}
該函數使用方法很方便,如下面的代碼就分別獲得5中圖像編碼器的CLSID
CLSID encoderClsid
GetEncoderClsid(L"image/png", &encoderClsid); //png
GetEncoderClsid(L"image/bmp", &encoderClsid);
GetEncoderClsid(L"image/gif", &encoderClsid);
GetEncoderClsid(L"image/jpeg", &encoderClsid);
GetEncoderClsid(L"image/tiff", &encoderClsid);

㈨ 如何查找自己想要的GDI函數.

圖形和圖像函數包含在graphics.h裡面

(一) 像素函數
56. putpiel() 畫像素點函數
57. getpixel()返回像素色函數
(二) 直線和線型函數
58. line() 畫線函數
59. lineto() 畫線函數
60. linerel() 相對畫線函數
61. setlinestyle() 設置線型函數
62. getlinesettings() 獲取線型設置函數
63. setwritemode() 設置畫線模式函數
(三)、多邊形函數
64. rectangle() 畫矩形函數
65. bar() 畫條函數
66. bar3d() 畫條塊函數
67. drawpoly() 畫多邊形函數
(四)、 圓、弧和曲線函數
68. getaspectratio()獲取縱橫比函數
69. circle()畫圓函數
70. arc() 畫圓弧函數
71. ellipse()畫橢圓弧函數
72. fillellipse() 畫橢圓區函數
73. pieslice() 畫扇區函數
74. sector() 畫橢圓扇區函數
75. getarccoords()獲取圓弧坐標函數
(五)、 填充函數
76. setfillstyle() 設置填充圖樣和顏色函數
77. setfillpattern() 設置用戶圖樣函數
78. floodfill() 填充閉域函數
79. fillpoly() 填充多邊形函數
80. getfillsettings() 獲取填充設置函數
81. getfillpattern() 獲取用戶圖樣設置函數
(六)、圖像函數
82. imagesize() 圖像存儲大小函數
83. getimage() 保存圖像函數
84. putimage() 輸出圖像函數

四、圖形和圖像函數
對許多圖形應用程序,直線和曲線是非常有用的。但對有些圖形只能靠操作單個像素才能畫出。當然如果沒有畫像素的功能,就無法操作直線和曲線的函數。而且通過大規模使用像素功能,整個圖形就可以保存、寫、擦除和與屏幕上的原有圖形進行疊加。
(一) 像素函數

56. putpixel() 畫像素點函數
功能: 函數putpixel() 在圖形模式下屏幕上畫一個像素點。
用法: 函數調用方式為void putpixel(int x,int y,int color);
說明: 參數x,y為像素點的坐標,color是該像素點的顏色,它可以是顏色符號名,也可以是整型色彩值。
此函數相應的頭文件是graphics.h
返回值: 無
例: 在屏幕上(6,8)處畫一個紅色像素點:
putpixel(6,8,RED);

57. getpixel()返回像素色函數
功能: 函數getpixel()返回像素點顏色值。
用法: 該函數調用方式為int getpixel(int x,int y);
說明: 參數x,y為像素點坐標。
函數的返回值可以不反映實際彩色值,這取決於調色板的設置情況(參見setpalette()函數)。
這個函數相應的頭文件為graphics.h
返回值: 返回一個像素點色彩值。
例: 把屏幕上(8,6)點的像素顏色值賦給變數color。
color=getpixel(8,6);

(二) 直線和線型函數
有三個畫直線的函數,即line(),lineto(),linerel()。這些直線使用整型坐標,並相對於當前圖形視口,但不一定受視口限制,如果視口裁剪標志clip為真,那麼直線將受到視口邊緣截斷;如果clip為假,即使終點坐標或新的當前位置在圖形視口或屏幕極限之外,直線截斷到屏幕極限。
有兩種線寬及幾種線型可供選擇,也可以自己定義線圖樣。下面分別介紹直線和線型函數。

58. line() 畫線函數
功能: 函數line()使用當前繪圖色、線型及線寬,在給定的兩點間畫一直線。
用法: 該函數調用方式為void line(int startx,int starty,int endx,int endy);
說明: 參數startx,starty為起點坐標,endx,endy為終點坐標,函數調用前後,圖形狀態下屏幕游標(一般不可見)當前位置不改變。
此函數相應的頭文件為graphics.h
返回值: 無
例: 見函數60.linerel()中的實例。

59. lineto() 畫線函數
功能: 函數lineto()使用當前繪圖色、線型及線寬,從當前位置畫一直線到指定位置。
用法: 此函數調用方式為void lineto(int x,int y);
說明: 參數x,y為指定點的坐標,函數調用後,當前位置改變到指定點(x,y)。
該函數對應的頭文件為graphics.h
返回值: 無
例: 見函數60.linerel()中的實例。

60.linerel() 相對畫線函數
功能: 函數linerel() 使用當前繪圖色、線型及線寬,從當前位置開始,按指定的水平和垂直偏移距離畫一直線。
用法: 這個函數調用方式為void linerel(int dx,int dy);
說明: 參數dx,dy分別是水平偏移距離和垂直偏移距離。
函數調用後,當前位置變為增加偏移距離後的位置,例如,原來的位置是(8,6),調用函數linerel(10,18)後,當前位置為(18,24)。
返回值:無
例: 下面的程序為畫線函數調用實例:
#i nclude<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
setcolor(15);
line(66,66,88,88);
lineto(100,100);
linerel(36,64);
getch();
restorecrtmode();
}

61. setlinestyle() 設置線型函數
功能: setlinestyle() 為畫線函數設置當前線型,包括線型、線圖樣和線寬。
用法: setlinestyle() 函數調用方式為void setlinestyle(int stly,unsigned pattern,int width);
說明: 參數style為線型取值,也可以用相應名稱表示,如表1-10中所示。
參數pattern用於自定義線圖樣,它是16位(bit)字,只有當style=USERBIT_LINE(值為1)時,pattern的值才有意義,使用用戶自定義線圖樣,與圖樣中「1」位對應的像素顯示,因此,pattern=0xFFFF,則畫實線;pattern=0x9999,則畫每隔兩個像素交替顯示的虛線,如果要畫長虛線,那麼pattern的值可為0xFF00和0xF00F,當style不為USERBIT_LINE值時,雖然pattern的值不起作用,但扔須為它提供一個值,一般取為0。
參數wigth用來設定線寬,其取值見表1-11,表中給出了兩個值,即1和3,實際上,線寬取值為2也是可以接受的。
若用非法參數調用setlinestyle()函數,那麼graphresult()會返回錯誤代碼,並且當前線型繼續有效。
Turbo C提供的線型與線寬定義在頭文件graphics.h中,表1-10和1-11分別列出了參數的取值與含義。

表1-10 線型
-----------------------------------------------------
名 稱 取 值 含 義
-----------------------------------------------------
SOLID_LINE 0 實線
DOTTED_LINE 1 點線
CNTER_LINE 2 中心線
DASHED_LINE 3 虛線
USERBIT_LINE 4 用戶自定義線型
-----------------------------------------------------

表1-11 線寬
-----------------------------------------------------------
名 稱 取 值 說 明
-----------------------------------------------------------
NORM_WIDTH(常寬) 1 一個像素寬(預設值)
THICK_WIDTH(加寬) 3 三個像素寬
-----------------------------------------------------------

這個函數的頭文件是graphics.h
返回值: 無
例: 下面的程序顯示了BC中所提供的線型圖樣:
#i nclude<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
for(i=0;i<4;i++)
{
setlinestyle(i,0,1);
line(i*50,200,i*50+60,200)
}
getch();
restorecrtmode();
}

62. getlinesettings() 獲取線型設置函數
功能: 函數getlinesettings() 用當前設置的線型、線圖樣和線寬填 寫linesettingstype型結構。
用法: 函數調用方式為void getlinesettings(struct linesettingstype *info);
說明: 此函數調用執行後,當前的線型、線圖樣和線寬值被裝入info指向的結構里,從而可從該結構中獲得線型設置。
linesettingstype型結構定義如下:
struct linesettingstype {
int linestyle;
unsigned upattern;
int thickness;
};
其中linestyle用於存放線型,線型值為表1-10中的各值之一。
upattern用為裝入用戶自定義線圖樣,這是16位字,每一位等於一個像素,如果哪個位被設置,那麼該像素打開,否則關閉。
thickness為線寬值存放的變數,可參見表1-11。
getlinesettings()函數對應的頭文件為graphics.h
返回值: 返回的線型設置存放在info指向的結構中。
例: 把當前線型的設置寫入info結構:
struct linesettingstype info;
getlinesettings(&info);

63.setwritemode() 設置畫線模式函數
功能: 函數setwritemode() 設置畫線模式
用法: 函數調用方式為 void setwritemode()(int mode);
說明: 參數mode只有兩個取值0和1,若mode為0,則新畫的線將復蓋屏幕上原有的圖形,此為預設畫線輸出模式。如果mode為1,那麼新畫的像素點與原有圖形的像素點先進行異或(XOR)運算,然後輸出到屏幕上,使用這種畫線輸出模式,第二次畫同一圖形時,將擦除該圖形。調用setwritemode()設置的畫線輸出模式隻影響函數line(),lineto(),linerel(),recangle()和drawpoly()。
setwritemode()函數對應的頭文件是graphics.h
返回值: 無
例: 設置畫線輸出模式為0:
setwritemode(0);

(三)、多邊形函數
對多邊形,無疑可用畫直線函數來畫出它,但直接提供畫多邊形的函數會給用戶很大方便。最常見的多邊形有矩形、矩形塊(或稱條形)、多邊形和多邊形塊,我們還把長方形條塊也放到這里一起考慮,雖然它不是多邊形,但它的特例就是矩形(塊)。下面直接介紹畫多邊形的函數。

64. rectangle() 畫矩形函數
功能: 函數rectangle() 用當前繪圖色、線型及線寬,畫一個給定左上角與右下角的矩形(正方形或長方形)。
用法: 此函數調用方式為void rectangle(int left,int top,int right,int bottom);
說明: 參數left,top是左上角點坐標,right,bottom是右下角點坐標。如果有一個以上角點不在當前圖形視口內,且裁剪標志clip設置的是真(1),那麼調用該函數後,只有在圖形視口內的矩形部分才被畫出。
這個函數對應的頭文件為graphics.h
返回值: 無
例: 下面的程序畫一些矩形實例:
#i nclude<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgrpah(&driver,&mode,"");
rectangle(80,80,220,200);
rectangle(140,99,180,300);
rectangle(6,6,88,88);
rectangle(168,72,260,360);
getch();
restorecrtmode();
}

65. bar() 畫條函數
功能: 函數bar()用當前填充圖樣和填充色(注意不是給圖色)畫出一個指定上左上角與右下角的實心長條形(長方塊或正方塊),但沒有四條邊線)。
用法: bar()函數調用方式為void bar(int left,int top,int right,int bottom);
說明: 參數left,topright,bottom分別為左上角坐標與右下角坐標,它們和調用函數rectangle()的情形相同,調用此函數前,可用setfillstyle()或setfillpattern()設置當前填充圖樣和填充色。
注意此函數只畫沒有邊線的條形,如果要畫有邊線的的條形,可調用下面的函數bar3d()來畫,並將深度參數設為0,同時topflag參數要設置為真,否則該條形無頂邊線。
這 應的頭文件為graphics.h
返回值: 無
例: 見函數bar3d()中的實例。

66.bar3d() 畫條塊函數
功能: 函數bar3d() 使用當前繪圖色、線型及線寬畫出三維長方形條塊,並用當前填充圖樣和填 充色填充該三維條塊的表面。
用法: 此函數調用方式為void bar3d(int left,int top,int right,int bottom,int depth,int topflag);
說明: 參數left,top,right,bottom分另為左上角與右下角坐標,這與bar()函數中的一樣。參數depth為條塊的深度,以像素為單位,通常按寬度的四分之一計算。深度方向通過屏顯縱橫比調節為約45度(即這時x/y比設置為1:1)。
參數topflag相當於一個布爾參數,如果設置為1(真)那麼條塊上放一頂面;若設置為0(假),則三維條形就沒有頂面,這樣可使多個三維條形疊加在一起。
要使圖形更加美觀,可利用函數floodfill()或setfillpattern()來選擇填充圖樣和填充色(參見本小節(五)填充函數 )。
bar3d()函數對應的頭文件為graphics.h
返回值: 無
例: 下面的程序畫一個條形和條塊:
#i nclude<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
setfillstyle(SOLID-FILL,GREEN);
bar(60,80,220,160);
setfillstyle(SOLID-FILL,RED);
bar3d(260,180,360,240,20,1);
getch();
restorecrtmode();
}

67. drawpoly() 畫多邊形函數
功能: 函數drawpoly() 用當前繪圖色、線型及線寬,畫一個給定若干點所定義的多邊形。
用法: 此函數調用方式為void drawpoly(int pnumber,int *points);
說明: 參數pnumber為多邊形的頂點數;參數points指向整型數組,該數組中是多邊形所有頂點(x,y)坐標值,即一系列整數對,x坐標值在前。顯然整型數組的維數至少為頂點數的2倍,在定義了多邊形所有頂點的數組polypoints時,頂點數目可通過計算sizeof(polypoints)除以2倍的sizeof(int)得到,這里除以2倍的原因是每個頂點有兩個整數坐標值。另外有一點要注意,畫一個n個頂點的閉合圖形,頂點數必須等於n+1,並且最後一點(第n+1)點坐標必須等於第一點的坐標。
drawpoly()函數對應的頭文件為grpahics.h
返回值: 無
例: 下面的程序畫一個封閉星形圖與一個不封閉星形圖:
#i nclude<graphics.h>
void main()
{
int driver,mode;
static int polypoints1[18]={100,100,110,120,100,130,120,125,140,140,130,120,
140,110,120,115,100,100};
static int polypoints2[18]={180,100,210,120,200,130,220,125,240,140,230,120,
240,110,220,115,220,110};
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
drawpoly(9,polypoints1);
drawpoly(9,polypoints2);
getch();
restorecrtmode();
}

(四)、 圓、弧和曲線函數
在一個屏幕上畫得很圓的圖形到另一個屏幕上可能被壓扁或拉長,這是因為每一種顯示卡與之相應的顯示模式都有一個縱橫比。縱橫比是指像素的水平方向大小與垂直方向大小的比值。如VGA顯示卡由於偈素基本上是正方形,所以縱橫比為1.000。
為了保證幾何圖形基本按預計情況顯示在屏幕上,用屏顯的縱橫比來計算和糾正不同硬體及顯示卡產生的畸變。計算縱橫比所需要的水平方向和垂直方向的比例系數可調用函數getaspectratio()獲得。

68. getaspectratio()獲取縱橫比函數
功能: 函數getaspectratio()返回x方向和y方向的比例系數,用這兩個整型值可計算某一特定屏顯的縱橫比。
用法: 此函數調用方式為void getaspectratio(int xasp,int yasp);
說明: 參數xasp指向的變數存放返回的x方向比例系數;參數yasp指向的變數存放返回的y方向比例系數。通常y方向比例系數為10 000, x方向比例系數不大於10 000(這是因為大多數屏幕像素高比寬長)。
注意縱橫比自動用作下面函數arc(),circle()和pieslice()中的標尺因子,使屏幕上圓或弧正常顯示。但用ellipse()函數畫橢圓必須調用本函數獲取縱橫比作為標尺因子,否則不予調整。縱橫比可用於其它幾何圖形,目的是校正和顯示圖形。
getaspectratio()函數對應的頭文件為graphics.h
返回值: 返回x與y方向比例系數分別存放在xasp和yasp所指向的變數中。
例: 下面的程序顯示縱橫比:
int xasp,yasp;
float aspectratio;
getaspectratio(&xasp,&yasp);
aspectratio=xasp/yasp;
printf("aspect ratio: %f",aspectratio);

69. circle()畫圓函數
功能: 函數circle()使用當前繪圖色並以實線畫一個完整的圓。
用法:該函數調用方式為void circle(int x,int y,int radius);
說明: 參數x,y為圓心坐標,radius為圓半徑,用像素個素表示。注意,調用circle()函數畫圓時不用當前線型。
不同於ellipse()函數,只用單個半徑radius參數調用circle()函數,故屏顯縱橫比可以自動調節,以產生正確的顯示圖。
此函數對應的頭文件為graphics.h
返回值: 無
例: 畫六個同心圓,圓心在(100,100)。
#i nclude<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
circle(100,100,10);
circle(100,100,20);
circle(100,100,30);
circle(100,100,40);
circle(100,100,50);
circle(100,100,60);
getch();
restorecrtmode();
}

70. arc() 畫圓弧函數
功能: 函數arc()使用當前繪圖色並以實線畫一圓弧。
用法: 函數調用方式為void arc(int x,int y,int startangle,int endangle,int radius);
說明: 參數x,y為圓心坐標,startangle與endangle分別為起始角與終止角,radius為半徑。圓心坐標和半徑以像素個數給出,起始角和終止角以度為單位,0度位於右邊,90度位於頂部,180度位於左邊,底部是270度。同往常一樣,360度與0度重合。角度按逆時針方向增加,但並不要求終止角一定比起始角大。例如指定300度和90度分別為起始角和終止角,與指定300度和450度分別為起始角和終止角可畫出相同的弧。大於360度可作為參數,它將被化到0度 ̄360度范圍里。函數arc()能畫封閉圓,只要取起始角為0度,終止角為360度即可。此函數中,屏顯縱橫比可自動調節。
arc()函數對應的頭文件為graphics.h
返回值: 無
例: 以(200,200)為圓心,100為半徑,從0度到120度畫圓弧:
#i nclude<graphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&drivwer,&mode,"");
setcolor(WHITE);
arc(200,200,0,120,100);
getch();
restorecrtmode();
}

㈩ GDI+ 文字輸出

CString 是 MFC 的東西,轉換成WCHAR,要用 A2W,或 T2CW。頭文件#include <atlconv.h>
編譯時,要含路徑:
C:\Program Files\Microsoft Visual Studio\VC98\ATL\Include
------------------------------------------------------------
CString str("Test");
WCHAR buf[1024]; // 或自己動態分配
USES_CONVERSION; // 必須有這句
wcscpy(buf, A2W((LPCSTR)str)); // 轉換,也可用 wcsncpy
如果用SDK:
Font myFont(L"Arial", 16);
PointF origin(0.0f, 0.0f);
SolidBrush blackBrush(Color(255, 0, 0, 0));
// DrawString 有幾種參數設法,例如
graphics.DrawString(
buf,
wcslen(buf),
&myFont,
origin,
&blackBrush);

閱讀全文

與gdi頭文件相關的資料

熱點內容
得物app如何用微信支付 瀏覽:184
網路瀏覽加速器 瀏覽:788
蘋果7好端端開不了機 瀏覽:42
javadouble精度損失 瀏覽:308
手機截圖女孩圖標是什麼app 瀏覽:168
有一行數據為什麼不排序 瀏覽:535
直接調用js函數 瀏覽:835
天貓2045是什麼網站 瀏覽:189
提取文件夾里所有word文件 瀏覽:288
隔空投送一次能傳送多少個文件 瀏覽:347
拇指玩gpk文件安裝器 瀏覽:475
肖戰為那英打call數據是多少 瀏覽:699
網路優化的發展 瀏覽:719
3dmax打開高版本 瀏覽:177
文件字體一般多少 瀏覽:551
到哪裡知道新發布的app 瀏覽:58
iphone用藍牙滑鼠 瀏覽:212
oracle資料庫設置一對多關系 瀏覽:878
oracle資料庫監聽口令 瀏覽:658
win101511apr 瀏覽:128

友情鏈接