Форум: "WinAPI";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
ВнизРисование с изменённой палитрой. Найти похожие ветки
← →
AlexanderMS © (2007-07-16 05:06) [0]Допустим, есть изображение (HBITMAP). Как его вывести так, чтобы в выведенном изображении был заменен, к примеру, красный цвет на синий, а белый - на чёрный?
← →
Nikfel © (2007-07-16 08:07) [1]Для этого надо вывести изображение на canvas, затем использовать свойство Pixels[x,y]. Это свойство получает цвет заданной точки и позволяет его изменять. Думаю что разберешься.
← →
Nikfel © (2007-07-16 09:09) [2]Вот процедура. Сегодня написал, вроде работает.
//процедура для замены цвета в изображении и вывод изображения.
procedure setbitmap(image:Timage;height,width:integer;Bitmap:hbitmap;color1,color2:tcolor) ;
var i,p:integer;
t:tbitmap;
begin
t:=tbitmap.Create;
t.Handle:=Bitmap;
image.Width:=Width;
image.Height:=Height;
image.Canvas.Draw(0, 0,t);
p:=0;
while p<=Height-1 do begin
for i:=0 to Width-1 do begin
if image.Canvas.Pixels[i,p]=color1 then begin
image.Canvas.Pixels[i,p]:=color2;
end;
end;
P:=p+1;
end;
t.Free;
end;
//по нажатию кнопки.
procedure TForm1.Button1Click(Sender: TObject);
begin
setbitmap(image1,48,48,image2.Picture.Bitmap.Handle,clWhite,clBtnText);
end;
← →
MultIfleX (2007-07-16 09:23) [3]О боже мой!!! Теперь попробуй запустить данную функцию при разрешении картинки 500*500 к примеру..... АХТУНГ БЛИН!!!! Лучше пользуйте ScanLine и TRGBTriple.
← →
Инс © (2007-07-16 09:59) [4]Если битмап имеет палитру, то просто заменить цвет в палитре.
← →
homm © (2007-07-16 10:49) [5]> Лучше пользуйте ScanLine и TRGBTriple.
А еще лучше ScanLine и TRGBQuad.
← →
Dib@zol © (2007-07-16 13:52) [6]А может просто DIB + GetObject -> получаем палитру и DC, заменяем в ней нужные цвета и SelectPalette(DC, Palette, False) + RealizePalette(DC)? Если надо, кину пример.
← →
AlexanderMS © (2007-07-16 16:35) [7]Спасибо, но я без Canvas"a работаю.
> Если битмап имеет палитру, то просто заменить цвет в палитре.
А это как?
> Dib@zol © (16.07.07 13:52) [6]
Предполагается, что DC будет один, а изображений, выводящихся на него, - несколько...
← →
Dib@zol © (2007-07-16 16:49) [8]
> Предполагается, что DC будет один, а изображений, выводящихся
> на него, - несколько...
Тем лучше! Палитра задаётся для DC, а не для битмапа! Получаешь ты этот DC (тогда ессно у контрола а не у битмапа) и выводишь на него свои картинки.
← →
AlexanderMS © (2007-07-16 18:53) [9]
> Тем лучше! Палитра задаётся для DC, а не для битмапа! Получаешь
> ты этот DC (тогда ессно у контрола а не у битмапа) и выводишь
> на него свои картинки.
Прошу прощения, не так выразился. Я имел ввиду следующее: к примеру, поменять красный цвет на синий на одном рисунке, зелёный на жёлтый - на другом, и всё это вывести на DC...
Просто я прочитал про механизм вывода изображений у игровых приставок: там каждому изображению настраивают палитру и выводят с этой палирой, создавая, к примеру, эффект переливания картинки цветами, блеска цвета, да и просто выводят несколько одинаковых по виду (за исключением цвета) объектов (типа машин в гоночках: все Ferrari, но одна - красная, другая - синяя и т. п.)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.051 c