FAQ FreeBASIC Grafické knihovny - Frequently Asked Questions - Často Kladené Otázky
 




Zpět na Hlavní stránku



FreeBASIC Grafická knihovna - Odpovědi na Vaše otázky


Jak mohu propojit a používat Gfxlib?
Gfxlib je vestavěn do jazyka, není tedy nutné vkládat další .bi soubory, nebo propojovat jakoukoliv knihovnu explicitně. FreeBASIC sám detekuje, že chcete použít Gfxlib, jakmile použijete příkaz Screen nebo ScreenRes. Takže pro používání Gfxlib stačí spustit grafický režim obrazovky a můžete používat příkazy grafiky.

Zpět na začátek

Co je fbgfx.bi záhlaví souboru?
fbgfx.bi záhlaví souboru slouží pro začlenění vaším programem a obsahuje konstanty a definice typů, užitečné pro programátora při použití Gfxlib. Tento soubor nemusíte výslovně zahrnout pro použití Gfxlib; hlavička je k dispozici pouze jako pomůcka. Obsahuje konstanty pro režim flagů (přeneseně 'vlajek'), které mohou být předány do Screen a ScreenRes, a také definice Keyboard scancodes (kódů kláves) a fb.Image buffer structure (vyrovnávacích struktur fb.Image).

Zpět na začátek

Jak mohu s Get/Put řídit správu polí?
Ve FreeBASIC mohou být obrazy-obrázky (images) použity jako datová pole (jako v QB), nebo jako ukazatele (pointers). Tak, či onak jsou obrazová data obsažena v jednom nepřetržitém bloku. Tento blok se skládá z hlavičky, následované obrazovými daty. Hlavička může být dvojího, starého či nového typu a určuje formát následujících obrazových dat. Detaily viz GfxInternalFormats.

Zpět na začátek

Proč mi Bsave/Bload shazuje program?
Bsave/Bload slouží ve FreeBASIC pouze k načítání a ukládání grafických obrazovek. Nemůže být použit pro uložení obrazovky v textovém režimu. Pro nahrání a ukládání pole pak použijte fragmenty z FileGet/FilePut .

Zpět na začátek

Jak získám informace o složkách barvy - červenou, zelenou, modrou a alfa?

Každý byte v atributu barvy koresponduje s červenými, zelenými, modrými a alfa komponenty. Následující příklad ukazuje, jak vyextrahovat hodnoty jednotlivých složek při 16, 24 a 32 bitovém režimu barev.

#define rgb_a(x) ((x) Shr 24)
#define rgb_r(x) ((x) Shr 16 And 255)
#define rgb_g(x) ((x) Shr 8 And 255)
#define rgb_b(x) ((x) And 255)

Dim As UInteger c
Dim As Integer x, y
Dim As UByte red, green, blue, Alpha

'' Předpoklad: je nastaven 16, 24, nebo 32 bitový režim obrazovky

c = Point(x, y)
red = rgb_r(c)
green = rgb_g(c)
blue = rgb_b(c)
Alpha = rgb_a(c)


Zpět na začátek

Jak může tlačítko 'x' v záhlaví okna zavřít mou aplikaci?
V okně grafického režimu můžete otestovat stisknutím tlačítka X (zavřít) s použitím Inkey, kontrolu pro hodnotu Chr( 255 ) + "k" (což je také vrácený kód pro Alt+F4). Toto platí pro Win32 a Linux V DOS tlačítko "X" není k dispozici.

Zde je malý příklad:

'' "X" - Tlačítko zavřít. Příklad jen pro Win32 a Linux
Dim As String key
Screen 13
Do
  Print "Klikni na 'x' pro zavření této aplikace."
  Sleep
  key = Inkey
Loop Until key = Chr(27) Or key = Chr(255, 107) 'escape nebo tlačítko-X


Zpět na začátek

Nelze spustit program použitím Screen 13 nebo 14 ve fullscreen!
Je to omezení ovladače/hardware (Win32 a Linux?). Grafické karty dnešní doby nemají vestavěnu podporu tak nízkého rozlišení tak velké oblasti. Pokud požadujete zobrazení na celou obrazovku, budete muset přepnout na režim Screen 17 nebo 18, s rozlišením nejméně 640x480 či vyšším, aby jste měli jistotu, že to moderní hardware zvládne.

Zpět na začátek

Proč Imagecreate vrací NULL pointer (ukazatel)?
ImageCreate potřebuje vytvořit buffer obrazu, který získá formát pixelu dané obrazovky, a to se nemůže stát, pokud dosud nebyl nastaven režim obrazovky, takže se vrátí NULL. Velmi pravděpodobně by později došlo k chybě programu jako výsledku pokusu NULL pointeru o přístup.

To se stane, když je Imagecreate volán předtím, než je inicializována grafická knihovna příkazem Screen nebo ScreenRes, což se také může stát, když je Imagecreate volán v globálním konstruktoru před voláním Screen nebo Screenres v hlavní části programu. V takovém případě je třeba přesunout inicializaci obrazovky přímo do konstruktoru a hlavně to provést před začátkem vytváření obrazových konstruktorů.

Zpět na začátek

Viz též
Překlad: Gmisiycs 21.2.2016