Главная страница
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.03 c
7-7248
Nazya
2002-03-07 14:14
2002.06.03
Мастера помогите ! Мне нужно написать сервис


1-7108
Duce
2002-05-22 14:57
2002.06.03
Реакция на клавиши в главной форме.


3-6937
icu
2002-05-13 19:33
2002.06.03
Развертывание приложений MS SQL Server


3-6944
Vladimir N.
2002-05-08 15:25
2002.06.03
Привязка программы с БД к BDE


3-6889
начинающий програмер
2002-05-12 19:46
2002.06.03
Фильтрация в БД