Главная страница
    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
3-6937
icu
2002-05-13 19:33
2002.06.03
Развертывание приложений MS SQL Server


3-6920
pusrg
2002-05-11 18:11
2002.06.03
Проблемы с коннектом к серверу Oracle


3-6898
Vitamin
2002-05-13 10:45
2002.06.03
получить список таблиц


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


1-6970
antistatic
2002-05-22 16:33
2002.06.03
Самый простой и обычный вопрос по DLL





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