如何判斷PixelFormat為pfDevice時是什麼樣的圖? |
答題得分者是:geniustom
|
pchw8598
一般會員 發表:43 回覆:63 積分:21 註冊:2003-11-09 發送簡訊給我 |
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
pchw8598 您好..以下是SetPixelFormat的原型..
procedure TBitmap.SetPixelFormat(Value: TPixelFormat); const BitCounts: array [pf1Bit..pf32Bit] of Byte = (1,4,8,16,16,24,32); var DIB: TDIBSection; Pal: HPalette; DC: HDC; KillPal: Boolean; begin if Value = GetPixelFormat then Exit; case Value of pfDevice: begin HandleType := bmDDB; Exit; end; pfCustom: InvalidGraphic(@SInvalidPixelFormat); else FillChar(DIB, sizeof(DIB), 0); DIB.dsbm := FImage.FDIB.dsbm; KillPal := False; with DIB, dsbm, dsbmih do begin bmBits := nil; biSize := sizeof(DIB.dsbmih); biWidth := bmWidth; biHeight := bmHeight; biPlanes := 1; biBitCount := BitCounts[Value]; Pal := FImage.FPalette; case Value of pf4Bit: Pal := SystemPalette16; pf8Bit: begin DC := GDICheck(GetDC(0)); Pal := CreateHalftonePalette(DC); KillPal := True; ReleaseDC(0, DC); end; pf16Bit: begin biCompression := BI_BITFIELDS; dsBitFields[0] := $F800; dsBitFields[1] := $07E0; dsBitFields[2] := $001F; end; end; try CopyImage(Handle, Pal, DIB); PaletteModified := Pal <> 0; finally if KillPal then DeleteObject(Pal); end; Changed(Self); end; end; end;意思就是說..目前顯示卡設定是幾BITS..就直接輸出幾BITS.. 因為他是直接從記憶體DC中把值取出來.. 假設您的顯示卡設定為32BIT..但是您要顯示的是24BIT.. 他必須要先從記憶體讀出來..轉換後..才輸出..所以如果您設定的BIT數與桌面解析度的BIT數不合..處理的速度會比較慢.. 以上是廢話... 您要知道 > 如何知道目前電腦的解析度,顏色位色數和掃描頻率 > |
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
不好意思阿..PO文之後才發現是BCB版
我幫您找了 class="code">
int tcs;
long int bpp,cp,tc;
Memo1→Lines→Add (“當前解析度?:”+String(Screen→Width)+“*”+S tring(Screen→Height));
bpp=GetDeviceCaps(Form1→Canvas→Handle ,BITSPIXEL);
bpp=GetDeviceCaps(Form1→Canvas→Handle ,BITSPIXEL);
tcs=pow(2,bpp); //計算色彩的梯度數
cp= GetDeviceCaps(Form1→Canvas→Handle,PLANES);
tc= pow(tcs,cp); //計算色深
Memo1→Lines→Add(“當前色深?:”+String(tc));
|
pchw8598
一般會員 發表:43 回覆:63 積分:21 註冊:2003-11-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |