Firemonkey的旁門左道 七

2021-06-17 23:01:18 字數 1220 閱讀 3181

時間過得真快,又到了週末!

今天晚上,我們就講講如何設定bitmap中的畫素點吧。

原先xe還保持了bitmap.scanline[i]的方法,不過到了xe4我們再一次無法使用了。

方法總比困難多。

通過tbitmapdata,我們還是可以訪問每個畫素點的,也就意味著我們可以去改變他們了。

**如下:

procedure tform1.testalphacolortopixel(abitmap: fmx.types.tbitmap; color: talphacolor;

distance: integer);

var bitdata1: tbitmapdata;

i: integer;

j: integer;

c: palphacolorrec;

begin

if (abitmap.map(tmapaccess.mareadwrite, bitdata1)) then

tryfor i := 0 to round(abitmap.width) - 1 do

for j := 0 to abitmap.height - 1 do

begin

begin

c := @palphacolorarray(bitdata1.data)

[j * (bitdata1.pitch div getpixelformatbytes(abitmap.pixelformat))+ i];

if c^.a <128 then

begin

c^.a := 255;

c^.r := 0;

c^.g := 0;

c^.b := 0;

endelse if c^.a = 128 then

begin

c^.a := 128;

c^.r := 128;

c^.g := 128;

c^.b := 128;

endelse

begin

c^.a := 255;

c^.r := 255;

c^.g := 255;

c^.b := 255;

end;

end;

end;

finally

abitmap.unmap(bitdata1);

end;

end;

官方demo:

Firemonkey的旁門左道 一

一般圖形繪製都會用到雙緩衝,先在記憶體中繪製到bitmap中,然後再輸出到介面中,可以不出現閃爍的情況。本以為在fmx也是同樣的套路。不然,發現canvas永遠是空白的,愣是不輸出。國內資料基本為o,翻牆無數,得知bitmap的繪製前後需要 bitmap.canvas.beginscene bitm...

Firemonkey的旁門左道 六

今天還是講講和圖形有關的事情,這次的難度再增加些,不是直接改源 了,而是通過rtti的方式去讓定製我們需要的功能。從bitmap的源 中,我們可以看到fpixelformat的屬性是私有的,也就是我們無法動態的去改變。明明有十幾種pixelformat形式,又不能去設定,難道又是bug?通過rtti...

一些旁門左道

asp.net 上如何重啟iis 達到讓 重啟的效果,可以用cmd.exe執行restartiis命令,可以修改web.config,但這些都要求 的賬戶有一定的許可權,至少 是要localsystem。private void restartiis string file codedir rest...