Delphi за професионалисти

За растерни формат - 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 - Линия ^ [й];

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

Var CardsDll. THandle;

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

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

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

Новини
Knights етер теория

Това Корнилов написа на страницата си в социалната мрежа.

Според Корнилов, тогава посланието му беше посрещната с недоверие.

Сега Владимир Корнилов реши да се върне към този въпрос, във връзка с които публикува в Моята страница във Фейсбук снимки мистериозни израелци, които взеха участие в клането в Одеса.

Сред многото въпроси, които Корнилов, каза той, биха искали да получите отговор, например, са както следва:

"Защо са случайно отиде в Одеса с медицинско оборудване, гумени ръкавици, ако са знаели предварително, че ще бъде ранен и убит? Или защо този боец ​​изведнъж забравили английски, когато разбра, че досието му? ".

Езера, морета и океани от северните --------- lushariya върти обратно на часовниковата стрелка Lc m - р-в-к-и, и водата в южната polushariya - RA - проводим разтваря -sya- зало- ч ас стрелка - Obra-zuya- -Oral-мравка-ски-е-ово-вода компания.

Основната причина за водовъртежите на въртене са местен вятър.
Колкото по-висока скорост на вятъра по-висока скорост на въртене на водовъртежи и като следствие, по-високи водовъртежи центробежната сила, като по този начин увеличаване на нивото на водата на морета и океани.
И толкова по-ниска центробежната сила от водовъртежи, толкова по-ниско нивото на водата в моретата и океаните.

скорост на потока по периметъра на моретата и океаните не е същото навсякъде и зависи от дълбочината на брега. В плитка част на скоростта на морските течения се увеличава, а в дълбоката част на морето се намалява.
Сезонни колебания в нивото на водата часовник-tsya не около бреговете на моретата и океаните-те, но само в тези брегове, където -висока ъгловата скорост на потоците и следователно висока центробежната сила на водата. (Центробежната сила F В = V / R).
През прави брегове, където течения нямат никаква ъглова скорост ниво на водата не се покачва.