Клас tbitmap - Глава 10

За растерни формат - DIB или DDB - отговаря имот:

тип TBitraapHandleType = (bmDIB, bmDDB);

имот HandleType: TBitmapHandleType;

Желаният дълбочината на цвета на растерна графика може да се намери и инсталира отново, промяна на стойността на имота:

TPixelFormat = (pfDevice, pflbit, pf4bit, pfSbit, pflSbit, PF 6 бита, pf24bit, pf32bit, pfCustom!);

имот PixelFormat: TPixelFormat;

Режим pfDevice съответства на DDB на растерна графика. Дълбочината на цвета на 1, 4 и 8 бита на пиксел - традиционното и включва наличието на изображението палитра. Други видове грижи за незабавното съхранение на яркостта на точки във всеки един от трите основни цвята - червен (R), зеления (G) и синия (B). Бит 15 съответства малко разпределение бита 5-5-5 (RGB555), 16 бита - RGB 565, 24 бита - RGB888. битов режим 32 е подобна на 24-малко, но това се добавя допълнително четвърто въже (алфа канал), съдържащи допълнителна информация за прозрачността на всяка точка. Режим pfCustom е предназначен за изпълнението на собствените графичен дизайн на програмиста. В стандарт се използва в класната стая TBitmap свойства PixelFormat в режим pfCustom ще се провалят - така че да го използвате само необходимо пишете потомци TBitmap.

А растерна графика е вид ресурс. Естествено, клас TBitmap поддържа зареждане на ресурс за кандидатстване:

процедура LoadFromResourcelD (съд: THandle; RESID: цяло число);

процедура LoadFromResourceName (съд: THandle; Конст ResName: низ);

Ето например - това е глобална променлива система модул, който съхранява уникален идентификатор на течаща копие от заявлението (или динамична библиотека връзка).

достъпни чрез имота растерни платно:

имот Платно: TCanvas;

Тя може да се използва за изготвяне на повърхността на растерна графика. Моля, обърнете внимание, че няма други наследници TGraphic платно не е нужно.

Дръжки растерна графика и неговата палитра се предлагат като свойства:

имот Дръжка: HBITMAP;

имот Palette: HPALETTE;

При работа с класа TBitmap, имайте предвид, че на принципа на "един обект - една дръжка", защото на механизма за кеширане, е неправилно. Две методи:

функция ReleaseHandle: HBITMAP;

функция ReleasePalette: HPALETTE;

връща манипулатор към растерна графика и палитра, съответно, и след нула, дескрипторите, т.е.. д., тъй като това са "дадени" на потребителя.

Когато всеки външен адрес на дескриптора на растерна графика, и всеки опит да привлече на своя платно разделение на едно изображение няколко обекта е прекъснат, а обектът получава своя собствена копие на съдържанието на дескриптора. За да направите това, има и методи:

  • процедура Скрит - разтоварване на потока от изображение и унищожава дръжки растерна графика и палитра;
  • процедура Freeimage - "освобождаващо" растерна графика дръжка за по-нататъшна употреба и модификация на. Това означава, че ако дръжката има сведение, че е дублиран; Нахранете изчистени.

В растерна графика може да бъде черно-бяло и цветно, че се определят свойствата:

имот Монохромно: Булева;

Вярно стойност съответства на един монохромен растерна графика. Когато съдържанието му се променя, превръщането на необходимата форма.

За прозрачността на растерна графика отговаря на следните характеристики:

имот TransparentColor: TColor;

тип TTransparentMode = (tmAuto, tmFixed);

имот TransparentMode: TTransparentMode;

Ако имотът е настроен на режим TransparentMode tmAuto, за прозрачен (фон) Цветът е взето на горния ляв пиксел. В противен случай, цветът е взета от Transparentcolor собственост.

В растерна графика може да се използва като маска за други растерни изображения. В този случай, тя се превръща в два цвята, където боядисани в бяло фон точка (виж Transparentcolor собственост.) И черно - останалото. В подкрепа на този режим са следните методи и свойства:

процедура маска (Transparentcoior: TColor);

имот MaskHandle: HBITMAP;

функция ReleaseMaskHandle: HBITMAP;

И накрая, последната от сметката ще се смята за една много важна функция битова карта TBitmap. Ако форматът на съхраняването й - DIB, е възможно да се ползват данните повечето от растерна графика:

имот ScanLine [ред: цяло число]: Стрелката;

Този имот е масив от указатели към редовете на данните за растерни. параметър РЕД съдържа номера на реда. Трябва да се помни, че в повечето случаи на линията в растерна графика са подредени в паметта от долу нагоре и в действителност първият заглавната част се съхранява след най-долния ред. Код, който се връща ScanLine стойността на имота, го позволява; така че не се изненадвайте, ако от стойността на параметъра на реда се намалява.

данни Вътрешни линии са подредени в съответствие с формата (pixelFormat). За pfsbit формат е проста - всеки байт в низа съответства на един пиксел. За формати pfisbit и pfiebit пиксел съответства на два байта (16 бита в тези пакетирани данни от три канала), pf24bit - три байта (един байт на канал).

Нещо като това може да изглежда като събитие манипулатор onMouseMove един, ще се появи на информация за състоянието на бар за яркостта на дадена точка (ако приемем, че форматът на растерна графика - 8 или 24-битов):

процедура TMainForm.ImagelMouseMove (Sender: TObject; Shift: TShiftState;

ако не и целеви (Imagel Picture.Bitmap.), след това излизане;

направя случай PixelFormat на

pfSbit: Statusbarl.SimpleText: = Формат ( "х: у: б: ... ', [X, Y, pByteArray (ScanLine [Y]) ^ [х]]);

pf24bit: Statusbarl.SimpleText: = Формат ( "х :. Y :. R:., G., В :. ',

[X, Y, pByteArray (ScanLine [Y]) L [3 * х] pByteArray (ScanLine [Y]) = [3 * х + L], pByteArray (ScanLine [Y]) = [3 * х + 2] ]);

Излишно стойност ScanLine собственост, не може да се променя (това е само за четене). Но можете да промените данните, до които тя точки. Ето как можете да получите отрицателна 24-битови изображения:

Var линия. pByteArray;

Защото: = 0 до Imagel.Picture.Bitmap.Height - 1 направи

За J: = 0 до Imagel.Picture.Bitmap.Width * 3 - 1 направи

Линия ^ [й]: = 255 - Линия ^ [й];

В Delphi може да срещнете "съименник" на обекта - структурата TBitmap, описан в WINDOWS.PAS файл. Тъй като и двете принадлежат към един и същ домейн, често има конфликти, които водят до грешки. Припомнете си, за да се разграничат синоними структура, трябва да използвате името на модула, в която са описани. Така че, ако вашата програма има модул на Windows и графика, като са описани видовете напитка Windows.TBitmap И Graphics.TBitmap.

Var CardsDll. THandle;

CardsDll: = LoadLibraryEx ( "cards.dll", 0, LOAD_LIBRARY__AS_DATAFILE);

Също така, можете да изтеглите битмапите за цялата палуба. Когато показване на карти, в зависимост от това дали е отворен или затворен, един от обектите, изготвен TBitmap:

ако е известно тогава // отворена карта