Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 10:40   #1
Zibiv
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 64
По умолчанию Инверсия цвета

Всем привет! С наступающим!
У меня такая проблем, два года не было программирования в университете, а сейчас зачем то поставили....
Задача в том что бы с картинкой bmp. происходило следующее преобразование - происходила инверсия зеленой компоненты...
Я знаю как инвертировать все изображение, ибо когда то это делал, а как инвертировать один цвет из RGB не понимаю...

Нашел в интернете этот код

Код:
procedure I(Bitmap: TBitmap);
type
  TRGB = record
    B, G, R: Byte;
  end;
  pRGB = ^TRGB;
var
  x, y: Integer;
  Dest: pRGB;
begin
  Bitmap.PixelFormat := pf24Bit;
  for y := 0 to Bitmap.Height - 1 do
  begin
    Dest := Bitmap.ScanLine[y];
    for x := 0 to Bitmap.Width - 1 do
    begin
      with Dest^ do
      begin
        R := 255 - R;
        G := 255 - G;
        B := 255 - B;
      end;
      Inc(Dest);
    end;
  end;
end;
но он у меня не дает ни каких изменений.

На форме у меня соответственно картинка в формате bmp, кнопка выхода и кнопка которая производит операцию


Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    img1: TImage;
    btn1: TButton;
    btn2: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
Может у кого есть дельные советы или же кто тоделал уже, спасибо огромное заранее
Zibiv вне форума Ответить с цитированием
Старый 21.12.2011, 18:56   #2
Zibiv
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 64
По умолчанию

Подскажите, тогда хотя бы как заставить работать код который выше приводил, засовываю на кнопку, компилируется нормально, а вот при нажатие выдает ошибку...
Уже завтра сдавать надо!


Код:
var
  Form1: TForm1;
  Bitmap:TBitmap;

implementation

{$R *.dfm}



procedure TForm1.btn2Click(Sender: TObject);
type
  TRGB = record
    B, G, R: Byte;
  end;
  pRGB = ^TRGB;
var
  x, y: Integer;
  Dest: pRGB;
begin
  Bitmap.PixelFormat := pf24Bit;
  for y := 0 to Bitmap.Height - 1 do
  begin
    Dest := Bitmap.ScanLine[y];
    for x := 0 to Bitmap.Width - 1 do
    begin
      with Dest^ do
      begin
        R := 255 - R;
        G := 255 - G;
        B := 255 - B;
      end;
      Inc(Dest);
    end;
  end;
end;
Zibiv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инверсия в масиве user10 Паскаль, Turbo Pascal, PascalABC.NET 2 18.04.2011 00:19
Снова Инверсия) Lag Общие вопросы C/C++ 2 10.05.2010 21:31
Инверсия в словах Lag Общие вопросы C/C++ 4 02.05.2010 15:52
Инверсия Witaliy Общие вопросы Delphi 2 12.05.2008 19:23
Инверсия цвета Dj_smart Общие вопросы Delphi 6 08.05.2008 16:29