![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с transparent
rect © (2009-05-26 20:42:00)Если рисовать текст крупного размера в Timage с включенной прозрачностью, то по краям букв видны белые точки. Можно ли как-нибудь этого избежать?
Игорь Шевченко (2009-05-28 02:22:00) [1]
> Не аонял.
> Попробую понять завтра.
Картинки не видно ?
Германн (2009-05-28 02:19:00) [2]
> Игорь Шевченко © (28.05.09 02:15) [32]
>
> Германн © (28.05.09 01:55) [30]
>
>
> > ???
>
>
> http://cid-2fbfd926d50f54d0.skydrive.live.com/self.aspx/LabelEffect
Не аонял.
Попробую понять завтра.
Игорь Шевченко (2009-05-28 02:15:00) [3]Германн © (28.05.09 01:55) [30]
> ???
http://cid-2fbfd926d50f54d0.skydrive.live.com/self.aspx/LabelEffect
Игорь Шевченко (2009-05-28 02:02:00) [4]
> На форме есть один большой главный image в который будет
> загружаться цветная картинка. Далее поверх этого image будут
> создаваться динамические, в которых будет выводится текст
> и нужно, чтобы главная картинка оставалась видна (для этого
> и использую transparent)
Это не задача, это реализация задачи.
Ты к совету [25] прислушайся, а то потом будешь спрашивать, как прозрачную картинку поверх своего Image нарисовать или надпись шрифтом полупрозрачную сделать.
Германн (2009-05-28 01:55:00) [5]
> rect (28.05.09 01:46) [28]
>
> Для всех интересующихся подробнее опишу свою задачу: На
> форме есть один большой главный image в который будет загружаться
> цветная картинка. Далее поверх этого image будут создаваться
> динамические, в которых будет выводится текст и нужно, чтобы
> главная картинка оставалась видна (для этого и использую
> transparent)
???
sniknik (2009-05-28 01:53:00) [6]> поверх этого image будут создаваться динамические, в которых будет выводится текст
а TLabel не проще? он тоже может текст показывать...
rect (2009-05-28 01:46:00) [7]Для всех интересующихся подробнее опишу свою задачу: На форме есть один большой главный image в который будет загружаться цветная картинка. Далее поверх этого image будут создаваться динамические, в которых будет выводится текст и нужно, чтобы главная картинка оставалась видна (для этого и использую transparent)
rect (2009-05-28 01:35:00) [8]Всем спасибо! Код из [17] работает правильно, просто я к своему стыду неправильно понял смысл параметра lfQuality :)
Германн (2009-05-28 01:24:00) [9]Задача так до сих пор и непонятна.
С одной стороны нужно что-то выводить на "прозрачном" TImage. С другой стороны
> Вряд ли, так как фон у меня может содеражть несколько цветов
? "Прозрачный фон" не может содержать "несколько цветов"!
Или я что-то не понял?
sniknik (2009-05-28 00:15:00) [10]создай битмап динамически, не ложа его на форму, и считай его "подложкой" рисуй на нем. все что угодно, после перерисуй (Draw) с него куда надо.
rect (2009-05-28 00:02:00) [11]
> sniknik
Может быть задам глупый вопрос, но что такое "подложка"?
sniknik (2009-05-27 23:58:00) [12]> Придумал пока только следующий "извращённый" способ:
блин, да выведи его на "подложку" без прозрачности, тот же битмап, и уже после назначь ему прозрачный цвет и рисуй с этой подложки туда куда надо.
ктати так и не понял, а нафига рисовать на прозрачном имедже? в чем тайный смысл?
KilkennyCat (2009-05-27 23:51:00) [13]Вообще, странная манера создания логфонта... стандартный пример:
procedure TMainForm.MakeFont;
begin
// Clear the contents of FLogFont
FillChar(FLogFont, sizeof(TLogFont), 0);
// Set the TLOGFONT's fields
with FLogFont do
begin
lfHeight := StrToInt(seHeight.Text);
lfWidth := StrToInt(seWidth.Text);
lfEscapement := StrToInt(cbEscapement.Items[cbEscapement.ItemIndex]);
lfOrientation := StrToInt(cbOrientation.Items[cbOrientation.ItemIndex]);
lfWeight := WeightArray[cbWeight.ItemIndex];
lfItalic := ord(cbxItalic.Checked);
lfUnderline := ord(cbxUnderLine.Checked);
lfStrikeOut := ord(cbxStrikeOut.Checked);
lfCharSet := CharSetArray[cbCharset.ItemIndex];
lfOutPrecision := OutPrecArray[cbOutPrec.ItemIndex];
lfClipPrecision := ClipPrecArray[cbClipPrec.ItemIndex];
lfQuality := QualityArray[rgQuality.ItemIndex];
lfPitchAndFamily := PitchArray[rgPitch.ItemIndex] or FamilyArray[cbFamily.ItemIndex];
StrPCopy(lfFaceName, cbFontFace.Items[cbFontFace.ItemIndex]);
end;
// Retrieve the requested font
FHFont := CreateFontIndirect(FLogFont);
// Assign to the Font.Handle
pbxFont.Font.Handle := FHFont;
pbxFont.Refresh;
end;
источник: http://www.delphisources.ru/pages/faq/base/make_font.html
rect (2009-05-27 23:51:00) [14]
> что, качество не сработало?
не понял вопроса
> fnt.lfQuality := 0; ?
При любом значении параметра результат на экране абсолютно одинаков
KilkennyCat (2009-05-27 23:46:00) [15]
> KilkennyCat © (27.05.09 23:46) [19]
fnt.lfQuality := 0; ?
KilkennyCat (2009-05-27 23:46:00) [16]что, качество не сработало?
rect (2009-05-27 23:44:00) [17]Придумал пока только следующий "извращённый" способ:
for j:=1 to i.Width do
for k:=1 to i.Height do
if (i.Canvas.Pixels[j,k]<>clBlack) and (i.Canvas.Pixels[j,k]<>clWhite) then i.Canvas.Pixels[j,k]:=clBlack;
Правда в этом случае качество шрифтов немного хромает :)
rect (2009-05-27 23:42:00) [18]
> Да, эту. Помогло?
>
Если нижеприведенный мною код правильный, то не работает :(
fnt: TLogFont;
begin
i.Canvas.Font.Color:=clBlack;
i.Canvas.Font.Size:=50;
i.Canvas.Font.Name:='Times New Roman';
i.Transparent:=true;
GetObject(i.Canvas.Font.Handle, SizeOf(TLogFont), @Fnt);
fnt.lfQuality := 0;
i.Canvas.Font.Handle := CreateFontIndirect(Fnt);
i.Canvas.TextOut(0,100,'2339448234');
> {RASkov}
Вряд ли, так как фон у меня может содеражть несколько цветов
{RASkov} (2009-05-27 16:38:00) [19]Можно еще попробывать так:
код из [1]:
image.transparent:=true;
image.canvas.font.size:=34;
image.canvas.font.fontname:="Times New Roman";
image.canvas.brush.color:= //цвет парента image'са например если это форма то - :=Color;
image.canvas.TextOut(0,0,'ЫЫЫЫЫ');
Я думаю автору этого будет достаточно)
Григорьев Антон (2009-05-27 16:02:00) [20]
> rect (27.05.09 14:36) [14]
Да, эту. Помогло?