Главная страница
    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.006 c
1-7025
Maloy
2002-05-21 12:56
2002.06.03
Генерирование отчетов в Word


1-6992
QWest
2002-05-22 16:15
2002.06.03
Горит заказ!!! Помогите!!


1-7006
s-gorbachev
2002-05-23 12:42
2002.06.03
Как программно изменить ширину столбца StringGrid?


4-7259
a_k_v
2002-03-27 13:49
2002.06.03
Перехват вызовов API функций из екзешника в NE формате


14-7191
dimich
2002-04-26 11:18
2002.06.03
Как подгрузить autoexec в Win2000?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский