Firemonkey的旁門左道 一

2021-06-17 21:18:30 字數 1018 閱讀 5983

一般圖形繪製都會用到雙緩衝,先在記憶體中繪製到bitmap中,然後再輸出到介面中,可以不出現閃爍的情況。

本以為在fmx也是同樣的套路。不然,發現canvas永遠是空白的,愣是不輸出。國內資料基本為o,翻牆無數,得知bitmap的繪製前後需要:

bitmap.

canvas.beginscene;

...bitmap.canvas.endscene;

在此之後需要

bitmapchanged

一下,然後再drawbitmap到介面中。滿心歡喜,結果卻大失所望.

bitmapchanged在vcl的專案中有效,但是在fmx的框架中 已經被置為了private,這在xe2中還是public。難道是英巴卡迪諾開發人員開小差了?

在quality center中果然有人提了這個bug, 不過至今還沒有fixed掉。

後來發現在drawbitmap前後,分別對目標canvas進行beginscene, endscene即可顯示繪製內容。

**結構如:

bitmap.

canvas.beginscene;

...bitmap.canvas.endscene;

self.canvas.beginscene() ;

self.canvas.drawbitmap(bitmap, rectf(0,0,500,500), rectf(0,0,500, 500), 1);

self.canvas.endscene;

當然你可能發現,如果是在paint事件中進行繪製,那麼就不需要套上beginscene,endscene了。我想對於paint事件,應該是進行過特殊處理。有機會可以把源**挖出來看看。

-----------------

還有乙個方法:timagecontrol

提供了bitmap

,在上面繪製就是所繪即所得,不會出現明明繪製了,結果還是空白的情況。

Firemonkey的旁門左道 七

時間過得真快,又到了週末!今天晚上,我們就講講如何設定bitmap中的畫素點吧。原先xe還保持了bitmap.scanline i 的方法,不過到了xe4我們再一次無法使用了。方法總比困難多。通過tbitmapdata,我們還是可以訪問每個畫素點的,也就意味著我們可以去改變他們了。如下 proced...

Firemonkey的旁門左道 六

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

一些旁門左道

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