Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

pf32bit [D7]


Pa5ha ©   (2004-07-02 23:20:00) 

Как установить на tBitmap отличный от pfDefault формат пикселя?


Огромное Кулясищще   (2004-07-04 20:40:00) [1]

Главное, это:
Das32bit.Assign(Das8bit);

Delphi из меньшего в большее конвертирует автоматом.


Pa5ha   (2004-07-04 20:28:00) [2]

Опа, спасибо. А то до Draw я сам не допер...


Огромное Кулясищще   (2004-07-04 19:22:00) [3]

Вот код, выполняющий задачу.


unit mainUnit;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TmainForm = class(TForm)
   btnConvert: TButton;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure btnConvertClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 mainForm: TmainForm;

var
 Das8bit: TBitmap;
 Das32bit: TBitmap;

implementation

{$R *.DFM}

procedure TmainForm.FormCreate(Sender: TObject);
begin
 Das8bit := TBitmap.Create;
 If not FileExists('bit8.bmp') then
  begin
    ShowMessage('Изображение bit8.bmp отсутствует!');
    Application.Terminate;
  end;
 Das8bit.LoadFromFile('bit8.bmp');
 If Das8bit.PixelFormat <> pf8bit then
  begin
    ShowMessage('Неверный формат! Нужен 8-битный!');
    Application.Terminate;
  end;

 Das32bit := TBitmap.Create;
 Das32bit.PixelFormat := pf32bit;
end;

procedure TmainForm.FormDestroy(Sender: TObject);
begin
 Das32bit.Free;
 Das8bit.Free;
end;

procedure TmainForm.btnConvertClick(Sender: TObject);
begin
 Das32bit.Assign(Das8bit);
 Canvas.Draw(0, 0, Das32bit);
end;

end.


Pa5ha   (2004-07-04 18:25:00) [4]

Короче, докладываю по форме...
32 бита позволяют закодировать (256*256*256=16777216) много цветов. А 8 бит позоляют закодировать только 256 цветов. При присвоении изображения с 8 битами изображению с 32 битами получаются только оттенки красного. Собственно говоря, мне это и не нравиться.


Огромное Кулясищще   (2004-07-04 17:23:00) [5]

Какая палитра? Через TColor работай или TRGBQuad.


Pa5ha   (2004-07-04 14:05:00) [6]

Упс, точно, все работает. Что то я ступил...
Ладно, хорошо, а как тогда с цветами работать? Там палитра однобайтовая становиться или нет?


Огромное Кулясищще   (2004-07-03 13:57:00) [7]

до create ничто никогда не присваивается.


Pa5ha   (2004-07-03 01:19:00) [8]

Размер по барабану када присваивать. А вот при любой попытке присвоить другой формат появляется ашипка. А когда его надо присваивать, до create или после? Что то забыл...


Огромное Кулясищще   (2004-07-02 23:26:00) [9]

TBitmap.PixelFormat := pf32bit;

Слушай, а как ты узнал про pf32bit и не узнал про PixelFormat?

Кстати, при создании битмапа типа TBitmap сначала указывай PixelFormat, а потом выставляй размеры.


Наверх

Титульная страница Поиск, карта сайта Написать письмо