Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод палитры цветов BMP. Вывод палитры цветов BMP 
:(
    Опции темы
mantikora
  Дата 4.12.2008, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.12.2008

Репутация: нет
Всего: нет



    Вот такая тема, надо вывести палитру цветов для 8 битных бмп файлов..и сделать возможность работы с 8, 32 битными файлами, на данном этапе есть вот такой кусок программы по выводу бмп изоображения, очень надеюсь на ащу помощь, заранеее спасибоsmile
Код

unit Unit1;

interface

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

type
  twinbmpheader = packed record
    magicword: word;  //2byte "BM"
    filesize: longword; //4byte
    reserved1: word;
    reserved2: word;
    bitmapoffset: longword; //32-битное смещение к растровому массиву
  end;

type
  bitmapHEADER = packed record
    dlinazagolovka: longword;
    Width: longword;
    Height: longword;
    chislocvetplosk: word;
    chislobitnapixel: word;
    metodsgatia: longword;
    dlinarastrmassiva: longword;
    gorizrazresh: longword;
    vertikrazresh: longword;
    chislocvetov: longword;
    chisloosicvetov: longword;
end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  openDialog1 : TOpenDialog;
  header : twinbmpheader;
  header2 : bitmapHEADER;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i,j,n,l:integer;
  F: File;
  S:String;
  a:array[1..4]of byte;
  c:Tcolor;
begin
S:='';
  if OpenDialog1.Execute then
  begin
    AssignFile(F, OpenDialog1.FileName);
    Reset(F,1);
        begin
          BlockRead(F, header.magicword, 2);
          BlockRead(F, header.filesize, 4);
          BlockRead(F, header.reserved1, 2);
          BlockRead(F, header.reserved2, 2);
          BlockRead(F, header.bitmapoffset, 4);
          BlockRead(F, header2.dlinazagolovka, 4);
          BlockRead(F, header2.Width, 4);
          BlockRead(F, header2.Height, 4);
          BlockRead(F, header2.chislocvetplosk, 2);
          BlockRead(F, header2.chislobitnapixel, 2);
          BlockRead(F, header2.metodsgatia, 4);
          BlockRead(F, header2.dlinarastrmassiva, 4);
          BlockRead(F, header2.gorizrazresh, 4);
          BlockRead(F, header2.vertikrazresh, 4);
          BlockRead(F, header2.chislocvetov, 4);
          BlockRead(F, header2.chisloosicvetov, 4);
        end; 
        begin
          seek(F,header.bitmapoffset);
          if header2.Width mod 4 <> 0 then
          l:=header2.Width+4-header2.Width mod 4
          else  l:=header2.Width;
          n:=header2.chislobitnapixel div 8;
          for j:=header2.Height-1 downto 0 do
          for i:=0 to l-1  do
          begin
            BlockRead(F, a, n);
            if i<=header2.Width then
            begin
              c:=a[3]+a[1]shl 16+a[2] shl 8;
              image1.Canvas.Pixels[i,j]:=c;
            end;
          end;
        end;
    CloseFile(F);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
openDialog1:=TOpenDialog.Create(self);
end;
end.


PM MAIL   Вверх
Alexeis
Дата 4.12.2008, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



mantikora, вот тут есть описание и примеры работы http://forum.vingrad.ru/topic-94227.html


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
mantikora
Дата 4.12.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.12.2008

Репутация: нет
Всего: нет



Я читал..но не выходит добавить опцию определения 8-битного файла и если это он то вывести его палитру  smile  smile 
PM MAIL   Вверх
Alexeis
Дата 4.12.2008, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



  Значит плохо читал smile . См поле biBitCount, оно определяет битность цвета. А палитра если она есть, то идет сразу за bitmapInfoHeader по 4 байта на цвет. 3 байта RGB и 4й резервный.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0494 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.