Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];

Вниз

Проблема с заливкой градиентом по периметру. 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 вся ветка

Форум: "Media";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
1-7034
SPeller
2002-05-21 15:32
2002.06.03
Процедурные типы


6-7138
torex
2002-03-19 22:32
2002.06.03
Хук как альтернатива при написании firewall`а


8-7123
ilg
2002-01-14 14:17
2002.06.03
Как сделать Screenshot из видеоролика (TMediaPlayer)?


14-7213
IronHawk
2002-04-26 13:16
2002.06.03
Админам посвящаеться 4 :-))) ))) и последнее...


1-6966
Sasha M
2002-05-22 17:58
2002.06.03
Обработка нажатия кл. в ComboBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский