![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TBitmap.Transparent [XP]
Alral © (2008-09-10 23:10:00)Здравствуйте.
У меня вопрос:
программа сохраняет в Bitmap изображение, после чего рисует его на форме. Мне необходимо, чтобы у этого изображения не было фоновой заливки белым цветом, а только то, что я рисую. Я устанавливаю TBitmap.Transparent в True, TransparentColor := clWhite, TransparentMode:=tmFixed. Однако фон прозрачным не становится. Какая причина?
Германн (2008-09-11 01:59:00) [1]
> И, если память не изменяет, при использовании воркшопа,
> там этот цвет по умолчанию был.
> Но нигде в документации официально это не попадалось.
Во-во. Потому и спросил.
В воркшопе в палитре цветов был цвет "trasparent". А в имейджэдите его нет.
KilkennyCat (2008-09-11 01:43:00) [2]
> Германн © (11.09.08 01:36) [5]
У меня когда-то в 6 делфи была такая проблема. Не помню уже, где именно, какой контрол, но пока цвет не сменил - не прозрачило. И, если память не изменяет, при использовании воркшопа, там этот цвет по умолчанию был.
Кроме того, был момент, когда рисунок касался границ картинки - тоже не работала прозрачность. Сделал один пиксел по периметру - все нормально стало.
Но нигде в документации официально это не попадалось. Правда, я и не искал - методом тыка решилось (точнее, посмотрел пример из RxLiba, как они реализовывали), и ладно...
Германн (2008-09-11 01:36:00) [3]
> KilkennyCat © (11.09.08 00:20) [2]
>
> попробуй использовать clFuchsia
А почему именно clFuchsia?
P.S.
Спрашиваю серьёзно, без шуток.
Alral (2008-09-11 00:23:00) [4]По крайней мере он отображается как моё изображение на белом фоне.
Попробую как вы посоветовали. Спасибо.
KilkennyCat (2008-09-11 00:22:00) [5]И главное, чтобы фон вообще был... я что-то пока не заметил, чтоб созданный битмап был предварительно залит цветом фона.
KilkennyCat (2008-09-11 00:20:00) [6]попробуй использовать clFuchsia и обрати внимание, чтобы фон был по всему краю.
Alral (2008-09-10 23:11:00) [7]Код:
bPiece[1]:=TBitmap.Create;
bPiece[1].Width:=50;
bPiece[1].Height:=50;
bPiece[1].Transparent:=true;
bPiece[1].TransparentMode:=tmFixed;
bPiece[1].TransparentColor:=clWhite;
with bPiece[1].Canvas do begin
Pen.Color:=clBlack;
Pen.Width:=1;
Ellipse(5, 5, 45, 45);
Brush.Color:=clMaroon;
FloodFill(25, 25, clBlack, fsBorder);
Ellipse(12, 12, 38, 38);
end;
for lpX := 0 to 3 do begin
fMain.Canvas.Draw(lpX*100+50, 350, bPiece[1]);
fMain.Canvas.Draw((lpX+1)*100, 300, bPiece[1]);
fMain.Canvas.Draw(lpX*100+50, 250, bPiece[1]);
end;
Спасибо.