Текущий архив: 2007.02.25;
Скачать: CL | DM;
Внизочистить прозрачный canvas Найти похожие ветки
← →
пигмалеон (2006-06-29 15:43) [0]проблема, у меня прозрачный canvas, соответственно, рисую на нем картинку, но когда рисую следующую картинку, то под ней видна предыдущая - это не устраивает; вопрос: как можно очистить canvas, при этом сохранить его прозрачным, пробовал fillrect - не выходит, кто-нить знает?
← →
antonn © (2006-06-29 16:14) [1]скопировать на него то, что под ним?
← →
пигмалеон (2006-06-29 18:28) [2]очистить его и сделать прозрачным, то есть чтобы вместо рисунка появилась прозрачность и ничего более :)
← →
antonn © (2006-06-29 18:40) [3]что значит прозрачный?
там просто фон перед перерисовкой копируется на канвас. Ну вот и копируй:)
← →
пигмалеон (2006-06-29 19:18) [4]какой фон? куда копируется? объясняю еще подробнее, canvas у меня с brush.style:=csClear, соответственно, он прозрачный, я на него при помощи copyrect копирую одно изображение, потом другое, но так как эти два изображения отличаются друг от друга по форме, то под вторым изображением видно первое, задача - перед отрисовкой второго изображения сделать canvas чистым, сохранив его прозрачность
← →
Мефисто (2006-06-29 20:02) [5]Задачю обрисуй в целом.
TPaintBox ?
← →
пигмалеон (2006-06-30 00:28) [6]нет, компонент - потомок tgraphiccontrol, является кнопкой, есть несколько bitmap отображающих различные состояния этой кнопки, bitmap отображается по маске, то есть делаю маску из картинки, а потом по ней при помощи copyrect копирую на прозрачный canvas (то есть видно, что находится под компонентом), так вот при каждом copyrect остается предыдущее изображение и оно видно из-под нового, поэтому canvas нужно перед отрисовкой очищать, в этом-то и проблема, как очистить canvas, сохраняя его прозрачным
← →
homm © (2006-06-30 13:18) [7]> какой фон? куда копируется? объясняю еще подробнее, canvas
> у меня с brush.style:=csClear, соответственно, он прозрачный,
> я на него при помощи copyrect копирую одно изображение,
> потом другое, но так как эти два изображения отличаются
> друг от друга по форме, то под вторым изображением видно
> первое, задача - перед отрисовкой второго изображения сделать
> canvas чистым, сохранив его прозрачность
Не рисовать первый раз???
← →
пигмалеон (2006-06-30 15:51) [8]нет, первый раз канва и так чистая, а вот затем...
← →
han_malign © (2006-06-30 16:15) [9]
> canvas у меня с brush.style:=csClear, соответственно, он прозрачный
- это означает, что он не заполняется фоновым цветом при отрисовке графических примитивов - никакой прозрачности у компонентов нет в принципе - все окна прорисовываются по очереди в Z порядке. Тут тебе не Avalon с Direct3D...
Просто не нажно тупо отрисовывать на canvas когда приспичило - отрисовывать надо только на событие WM_PAINT, а когда приспичило - делать Invalidate...
← →
homm © (2006-06-30 19:49) [10]я чегото не понимаю!! Первый и второй раз как-то разделены во времени? Тогда вообще не понял вопроса, сделай рефреш родителя. А если нет, и первая прорисовка не нужна, то зачем ее делать?
← →
Pavia © (2006-07-01 17:18) [11]Использовать fillrect предворительно установив pen и brush прозрачным цветом и выбрать способ заливки bsSolid
← →
Мефисто (2006-07-01 22:36) [12]
> Использовать fillrect
Точно помогает?
← →
Pavia © (2006-07-03 18:12) [13]
> Точно помогает?
Точно. Мы жи прозрачным цветом закрашываем Brush.Style:=bsSolid.
bsSolid- ресует закрашенный прямоугольник.
bsClear- рисут рамку.
with Bitmap do
begin
canvas.Brush.Color:=TransParentColor;
canvas.Brush.Style:=bsSolid;
canvas.Pen.Color:=TransParentColor;
Canvas.FillRect(rect(0,0,Width,Height));
end;
← →
Мефисто (2006-07-03 18:40) [14]
> Точно.
А ты сам попробуй :)
> Мы жи прозрачным цветом закрашываем Brush.Style:=bsSolid.
bsSolid - F1 о другом говорит. И для системы нет такого понятия прозрачный цвет :) Темболее вопрос ставился по Canvas в целоом, а не возможность реализации исключения TransparentColor классом TBitmap, как по примеру выше.
Ответ уже дан выше
> отрисовывать надо только на событие WM_PAINT, а когда приспичило
> - делать Invalidate...
← →
Pavia © (2006-07-03 19:30) [15]Пробовал работает.
Читай внимательней.
> bsSolid - F1 о другом говорит
Что значит о другом?
bsSolid- ресует закрашенный прямоугольник.
bsClear- рисут рамку.
> И для системы нет такого понятия прозрачный цвет :)
Есть.
> Темболее вопрос ставился по Canvas в целоом, а не возможность
> реализации исключения TransparentColor классом TBitmap,
> как по примеру выше.
А что битмеп скапировать на канвас не судьба?
Canvas.Draw(0,0,Bitmap)
И будет тебе счастье.
← →
antonn © (2006-07-03 19:53) [16]bssolid - использует canvas.brush, bsclear не использует. При использовании canvas.fillrect() никакой рамки не будет в любом случае.
← →
Мефисто (2006-07-03 22:06) [17]
> А что битмеп скапировать на канвас не судьба?
Можно, но не нужно.
Использовать промежуточный битмап, там где он не нужен - совершенно ни кчему :) (это если учитывать что создает автор - топиками выше)
Страницы: 1 вся ветка
Текущий архив: 2007.02.25;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.047 c