Форум: "Начинающим";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
ВнизCanvas, Image Найти похожие ветки
← →
!_SM_! (2006-07-05 22:37) [0]Здраствуйте! Подскажите пожалуйста как реализовать вывод графики слоями
т.е. есть форма на ней два Имиджа. Первый растянут по всей форме и в него загружена картинка. Второй поверх первого, изначально ничего в нем нет. Вопрос как рисовать на канве второго так чтобы рисунок первого под ним просматривался. Делаю так (код ниже)
второй имидж закрашивается белым и на нем рисуется то че надо. Как зделать что-бы на нем рисовалось то че надо, а белым он не закрашивался?
Очищаю рисунок вот так - Imige2.Picture.Graphic:=nil;
Да и между первым и вторым Image может еще находится чего нибудь будь то еще имидж или Label с Transporent=True; Второй Имидж самый верхний всегда и на нем нужно что-то рисовать не порча всю нижнюю картину.
procedure TForm1.Button4Click(Sender: TObject);
var BMP: TBitMap;
begin
BMP:=TBitMap.Create;
BMP.Width:=Im.Width; BMP.Height:=Im.Height;
//BMP.Transparent:=True;
BMP.Canvas.Brush.Style:=bsClear;
BMP.Canvas.Rectangle(10, 10, 100, 100);
Im.Canvas.Draw(0, 0, BMP);
Im.Canvas.LineTo(100,150);
BMP.Free;
end;
Спасибо.
← →
PSPF2003 © (2006-07-05 22:56) [1]Сначала скопируй область во второй Image а потом рисуй на нем.
← →
PSPF2003 © (2006-07-05 22:57) [2]Область копируется CopyRect
← →
!_SM_! (2006-07-06 00:54) [3]
> PSPF2003 © (05.07.06 22:57) [2]
ну а если там
> Да и между первым и вторым Image может еще находится чего
> нибудь будь то еще имидж или Label с Transporent=True; Второй
> Имидж самый верхний всегда и на нем нужно что-то рисовать
> не порча всю нижнюю картину.
11111111111111111111111111111111111111111111111111111111
1 1
1 1
1 1
1 2222222222222222222222222222 1
1 2 2 1
1 LLL2LLLL 2 1
1 LLL2LLLL 2 1
1 2 2 1
1 2 2 1
1 EEE2EEEEEEEEE 2 1
1 EEE2EEEEEEEEE 2 1
1 2 2 1
1 2222222222222222222222222222 1
111111111111111111111111111111111111111111111111111111111
нарисовано:
1 - первый (нижний) имидж
L - Label между первым и вторым имиджами
E - Edit так же как и Label лежит
2 - второй (верхний) имидж
← →
!_SM_! (2006-07-06 00:56) [4]Как реализованы слои в фотожопе?
С прозрачной основой...
Вот типа че нибудь похожее надо.....
← →
PSPF2003 © (2006-07-06 09:16) [5]В Делфи нету слоев. Хотя возможно в GDI+ есть необходимые тебе возможности, двигайся в данном направлении. Могу порекомендовать книгу Программирование WIN32 API в Delphi авторы Дмитрий Кузан, Владимир Шапонов. В ней целый раздел посвешен графике в Делфи.
← →
Ketmar © (2006-07-06 09:53) [6]а я снова пошлю в сторону AlphaBlend(). %-) или Graphics32.
← →
PSPF2003 © (2006-07-06 10:18) [7]
> снова пошлю
Только б посылали :)
← →
Ketmar © (2006-07-06 10:37) [8]хе. могу и ещё дальше. а AlphaBlend() -- это вообще моя больная тема. столько лет не знать о ней... вот теперь всех туда и посылаю. %-)
← →
PSPF2003 © (2006-07-06 10:42) [9]Ндааа это уже диагноз :) Лечение не помогает? Не знаю там, пол стакана Transparent-а на бутылку Stretch-а… :)))
← →
!_SM_! (2006-07-06 11:41) [10]Спасибо всем.
Решил проблему так
pro... ButtonClick;
begin
Image2.Picture.Bitmap.TransporentColor:=clWhile;
Image2.Picture.Bitmap.Transporent:=True;
Image2.Canvas.FillRect(Image2.Canvas.ClipRect);
{Здесь рисуем что хотим
будет прозрачно по отношению
нижнего фона}
Image2.Canvas.LineTo(50, 150);
Image2.Canvas.Rectangle(10, 10, 300, 300);
Image2.Canvas.TextOut(20, 150, "Это просто пример");
end;
//стираю так
pro... ButtonClearClick;
begin
Imige2.Picture.Graphic:=nil;
end;
← →
antonn © (2006-07-06 11:55) [11]Ketmar © (06.07.06 10:37) [8]
хе. могу и ещё дальше. а AlphaBlend() -- это вообще моя больная тема. столько лет не знать о ней... вот теперь всех туда и посылаю. %-)
может updatelayeredwindow() ? :)
← →
!_SM_! (2006-07-06 12:11) [12]
> antonn © (06.07.06 11:55) [11]
Извени непонимаю о чем речь....
← →
antonn © (2006-07-06 13:39) [13]!_SM_! (06.07.06 12:11) [12]
да есть такая сумасшедшая функция, подменяет "изображение" формы на изображение подсунутого битмапа, без мерцаний, с альфаканалом, с прозрачностью и полупрозрачностью. Но редкая в плане упоминания.
← →
!_SM_! (2006-07-06 14:02) [14]
> antonn © (06.07.06 13:39) [13]
Спасибо. Посмотрю. А она стандартная, API или какая?
Приду домой посмотрю
← →
antonn © (2006-07-06 14:08) [15]она АПИ, примерчик: http://kladovka.net.ru/index.cgi?pid=list&rid=318
← →
!_SM_! (2006-07-06 14:22) [16]Скачал. Дома посмотрю. Спасибо.
← →
Ketmar © (2006-07-06 15:17) [17]>antonn © (06.07.06 11:55) [11]
да. это было в комплекте упоминаний. я пол-дня плакал: столько лет ругать microsoft -- и зря! %-)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.011 c