Funkci SetPixel jsme původně užívali po řadu let ke dvěma věcem, jednak ke kreslení bodů rastru, jednak pro "začištění" exklusivního kreslení. (Funkce LineTo totiž nevykresluje poslední bod, pokud je šířka čáry 1px, což je v Layoutu nejčastější případ.) Tato funkce má jednu zajímavou vlastnost, sice nedokumentovanou, ale -- pokud je mi známo -- zcela konsistentní na všech Windows: Respektuje režim kreslení, takže dovede např. XORovat.
Jenže ona to přesně vzato je spíše vlastnost jdoucí proti dokumentaci, protože ta říká, že pixel dostane barvu předanou jako parametr funkce SetPixel (odhlédneme-li od případného mapování na paletu), a vůbec nepředpokládá, že by stávající barva pixelu mohla hrát nějakou roli. To se projevilo při spuštění Formiky pod Linuxem a emulátorem WINE, kde pak za pohybujícím se ukazatelem zůstávalo smetí (tvořené rozsvícenými a nikdy již XORováním nezhasnutými pixely). Z toho důvodu jsme omezili užívání funkce SetPixel na případy, kde Pen.Mode = pmCopy. Ze schematického editoru tak vypadla zcela, v editoru desky mohla zůstat právě jen v kreslení rastru.
Cestou nejmenšího odporu asi bude i poslední SetPixel nahradit kombinací MoveToEx / LineTo. Než ji ale zařadím do programu, někdo by mohl změřit testy, které opět jsou v archivu www.formica.cz/files/forum/Grid.zip . Přidal jsem tam tlačítko, které přepíná mezi různými metodami kreslení. Grid se teď vykresluje 10x, aby měl časový údaj dostatečné rozlišení.
Na mých W2k SP4 se opuštěním SetPixel (resp. trochu rychlejšího SetPixelV) kreslení zpomalí cca o 10%. To asi je přijatelná cena; více mi vadí bizarní způsob kreslení pixelu čarou vedoucí do bodu, kde pixel mít nechci, ale na druhé straně se tak o jednu redukuje počet funkcí, které z Windows využívám.
S kreslením skrz bitmapu v tomto stadiu experimentovat nebudu. Bylo by třeba efektivně ošetřit nejen kreslení rastru do celého okna, ale také jen do clipping regionu. Oproti tomu však jsou možnosti kreslení skrz bitmapu (které bylo v zásadě zavedeno kvůli tomu, aby neblikaly všelijaké animace) daleko širší. Kdybych už čerpal další systémové prostředky vytvořením bitmapy, bylo by čistší je využít pořádně; k tomu bych potřeboval přepracovat celé grafické rozhraní, a pro to dnes už celkem nejsou důvody -- rychlost se zdá dostatečná nebo ji lze vylepšovat jinak.