Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.03;
Скачать: CL | DM;

Вниз

Проблема с заливкой градиентом по периметру. HELP!   Найти похожие ветки 

 
.: Joiro :. ©   (2002-01-07 21:49) [0]

Итак чайник в моей голове опять закипел и значит пришла пора задавать вопрос.

Я делаю систему градиентной закраски части картинки по периметру (пожже это будет Bevel эффект) используя краску-маску. Это и работает, но есть одна проблема, которую немогу решить (какая-то блокировка мозгов в последнее время). Сначала посмотрим код (чтобы сработало нужна картинка ("C:\H.bmp") с белым фоном и чем-то на процентов 50-70 плошади (лучше квадратом) посередине):

procedure TForm1.FormClick(Sender: TObject);
var
A,B,C : Byte;
BitMap2,Temp1,Temp2 : TBitmap;
begin
BitMap2 := TBitmap.Create;
Temp1 := TBitmap.Create;
Temp2 := TBitmap.Create;
BitMap2.LoadFromFile("C:\H.bmp");
Temp1.Assign(BitMap2);

for A := 0 to 63 do
begin
for B := 0 to 63 do
begin
if Temp1.Canvas.Pixels[A,B] <> clWhite then Temp1.Canvas.Pixels[A,B] := clLime;
end;
end;

for C := 1 to 10 do
begin
Temp2.Assign(Temp1);
for A := 0 to 63 do
begin
for B := 0 to 63 do
begin
if Temp1.Canvas.Pixels[A,B] = clLime then
begin
if (Temp1.Canvas.Pixels[A+1,B] <> clLime) then Temp2.Canvas.Pixels[A,B]:= RGB(C*20,C*20,C*20);
if (Temp1.Canvas.Pixels[A-1,B] <> clLime) then Temp2.Canvas.Pixels[A,B]:= RGB(C*20,C*20,C*20);
if (Temp1.Canvas.Pixels[A,B-1] <> clLime) then Temp2.Canvas.Pixels[A,B]:= RGB(C*20,C*20,C*20);
if (Temp1.Canvas.Pixels[A,B+1] <> clLime) then Temp2.Canvas.Pixels[A,B]:= RGB(C*20,C*20,C*20);
end;
end;
end;
Temp1.Assign(Temp2);
end;
BitMap2.Assign(Temp2);
Form1.Canvas.Draw(5,5,BitMap2);
end;


Вроде нормально заливает (зелёная краска внутри это нормально), но посмотря поближе в месте где первый пиксель обрабатывается (если квадрат то это верхний левый угол) всегда создаётся диагональная черточка из пикселей. Может кому-нибудь с свежей головой (это ВЫ, читатель) придёт мысль как от этого избавится? Заранее спасибо.


 
My}|{uK   (2002-01-09 15:57) [1]

Да, это всё ещё я - ну, может кто-нибудь всё же поможет? Полная блокировка мозгов - никак не могу найти причину этого глюка. Буду очень благодарен (пиво к сожалению обешать не могу).



Страницы: 1 вся ветка

Текущий архив: 2002.06.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
1-7011
Kordel
2002-05-22 12:32
2002.06.03
Завершение программы


8-7130
vbnz
2002-01-05 18:37
2002.06.03
DELPHIX:TDXSPRITEENJINE


1-7040
[BAD]Angel
2002-05-21 16:05
2002.06.03
Нужна помощь с динамической загрузкой DLL


7-7236
snoup
2002-03-08 01:15
2002.06.03
Какую функцию и какие команды содержит файл KRNL386.EXE?


8-7118
Zurap
2002-01-02 11:18
2002.06.03
3D