Форум: "Основная";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
ВнизКак размножить рисунок на TabSheet? Найти похожие ветки
← →
LAndrew (2002-09-28 23:22) [0]Нужно всего лишь размножить рисунок на вкладке PageControl. У TabSheet"a Canvas"a нет, т.е. тот способ, что подходит для формы, для него не подходит. И еще - как сделать расположенные на вкладках панели и GroupBox"ы были прозрачными (чтобы не закрывали фоновый рисунок). Использовать другие компоненты или делать свой (что вполне реально) не хочется, ибо уже вся прога написана, дизайн сделан - не хочется компоненты вырезать-вставлять.
← →
Song (2002-09-28 23:30) [1]Т.е. размножить?
У Вас есть рисунок и Вам нужно рядом нарисовать копию?
Кстати TCanvas получить можно просто его создав с дискриптором, получаемым по GetDC()
← →
LAndrew (2002-09-28 23:34) [2]фон нужно сделать из рисунка, т.е. заполнить рисунком вкладку. А насчет "просто его создав с дискриптором, получаемым по GetDC()": можно пример, а то я что-то с этим не знаком? Спасибо за ответ.
← →
Song (2002-09-28 23:45) [3]With TCanvas.Create Do
try
Handle:=GetDC(TabSheet1.Handle);
// Отсюда доступны все методы класса TCanvas для TabSheet
finally
Free;
end;
← →
LAndrew (2002-09-29 00:01) [4]Да! Это работает! Только вот когда переключаю на другую вкладку (2-ую), а потом возвращаюсь на 1-ую, фон (рисунок) на первой пропадает, если же рисование прописать в событии OnShow, то TabSheet заполняется рисунком не сразу, а за какое-то время (секунды за 1-2 на моем компе), что не очень-то удобно (и красиво). Существует ли какой-либо другой способ? И можно ли как-то панели и (о!) сам TabSheet и PageControl сделать прозрачным, может быть каким-нибудь аналогичным способом. Заранее огромное спасибо.
← →
Song (2002-09-29 08:47) [5]Надо перехватывать onPaint
← →
turusov (2002-09-30 10:13) [6]Выдержка из личного ( потомок TImage)
procedure TNsImage.Paint;
var
Save: Boolean;
I, J: integer;
R: TRect;
begin
if csDesigning in ComponentState then
with inherited Canvas do begin
Pen.Style := psDash;
Brush.Style := bsClear;
Rectangle(0, 0, Width, Height);
end;
if (Picture.Graphic <> nil) AND (ImageWay = iwPicture) then begin
Save := FDrawing;
FDrawing := True;
try
R:= DestRect;
with inherited Canvas do begin
if FDuplicate then begin
for I := 0 to (R.Right - R.Left) div Picture.Width do
for J := 0 to (R.Bottom - R.Top) div Picture.Height do
Draw(I * Picture.Width, J * Picture.Height, Picture.Graphic);
end
else
StretchDraw(R, Picture.Graphic);
end;//with
finally
FDrawing := Save;
end;
end//if
else
if ImageWay = iwGradient then begin
Save := FDrawing;
FDrawing := True;
try
R:= DestRect;
GradientFillRectStyle(inherited Canvas, FNsGradientImage.GradientStyle, R, FNsGradientImage.StartColor,
FNsGradientImage.EndColor, FNsGradientImage.Direction, byte(FNsGradientImage.Colors));
finally
FDrawing := Save;
end;
end;//if iwPen
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c