Форум: "Начинающим";
Текущий архив: 2009.07.26;
Скачать: [xml.tar.bz2];
ВнизПроблемы с transparent Найти похожие ветки
← →
rect (2009-05-26 20:42) [0]Если рисовать текст крупного размера в Timage с включенной прозрачностью, то по краям букв видны белые точки. Можно ли как-нибудь этого избежать?
← →
rect (2009-05-26 22:51) [1]Неужели никто не может мне помочь? Если вы не поняли впопрос, то могу уточнить:
Пишуimage.transparent:=true;
image.canvas.font.size:=34;
image.canvas.font.fontname:="Times New Roman";
image.canvas.TextOut(0,0,"ЫЫЫЫЫ");
При больших размерах шрифта по краям букв видны белые, не ставшие прозрачными, точки. Можно ли как то этого избежать?
← →
Игорь © (2009-05-26 23:25) [2]
> Если вы не поняли впопрос
Непонятно зачем рисовать на image, да ещё с transparent:=true
← →
rect (2009-05-26 23:27) [3]
> Непонятно зачем рисовать на image, да ещё с transparent:
> =true
Рисовать поверх другой картинки с последующим сохранением в файл. Что тут может быть непонятного :)
← →
Игорь © (2009-05-26 23:40) [4]image.Canvas.Brush.Style:= bsClear
← →
rect (2009-05-26 23:58) [5]к сожалению, не помогло :(
← →
Игорь © (2009-05-27 00:10) [6]
> rect (26.05.09 23:58) [5]
Ну тогда извини, я не телепат, как же ты хочешь что бы тебе помогли если не понятно что и как ты там рисуешь на image кромеimage.transparent:=true;
image.canvas.font.size:=34;
image.canvas.font.fontname:="Times New Roman";
image.canvas.TextOut(0,0,"ЫЫЫЫЫ");
← →
rect (2009-05-27 00:28) [7]
> Игорь
Даже если просто создать новый проект, разместить на форме image, покрасив предварительно форму, например, в синий цвет, и по событию formshow выполнять приведенный мною код, видны ошибки в прозрачности
← →
KilkennyCat © (2009-05-27 01:58) [8]
> Даже если просто создать новый проект, разместить на форме
> image, покрасив предварительно форму, например, в синий
> цвет, и по событию formshow выполнять приведенный мною код
то работать не будет.
← →
KilkennyCat © (2009-05-27 02:02) [9]и даже исправив ошибку, белых точек не обнаружил. даже с размером шрифта в 534
Может, это координатная сетка? :)
← →
brother © (2009-05-27 06:14) [10]delphi какая?
на 6:
image1.canvas.font.fontname:="Times New Roman";
нет свойства, без него все ок! Битый шрифт?
← →
Григорьев Антон © (2009-05-27 08:28) [11]Видимо, у кого-то включен режим сглаживания текста, а у кого-то нет. У тех, у кого включен, по краям букв появляются точки, близкие по цвету к фону, но не совпадающие с ним, поэтому они не становятся прозрачными. У кого этот режим выключен, граница букв резкая, и точки, соответственно, не появляются. Где-то тут недавно проскакивал вопрос, как вывести резкий текст при включенном сглаживывании, поищите. Суть в том, что TFont там не поможет, надо вручную формировать TLogFont и устанавливать шрифт через API.
← →
KilkennyCat © (2009-05-27 09:24) [12]
> Григорьев Антон © (27.05.09 08:28) [11]
> Видимо, у кого-то включен режим сглаживания текста, а у
> кого-то нет
Ага. У меня выкл.
← →
rect (2009-05-27 14:10) [13]
> image1.canvas.font.fontname:="Times New Roman";
> нет свойства, без него все ок!
Писал по памяти и немного ошибся. Конечно же image.Canvas.Font.Name
> Григорьев Антон
буду пробовать. Вполне возможно, что так и есть. Так как подобный "глюк" возникает и в 7 и в 2009 Delphi
http://www.picamatic.com/view/3780643_2/
← →
rect (2009-05-27 14:36) [14]
> Григорьев Антон
Вы имели ввиду эту тему? (http://delphimaster.net/view/2-1242301358/)
← →
Григорьев Антон © (2009-05-27 16:02) [15]
> rect (27.05.09 14:36) [14]
Да, эту. Помогло?
← →
{RASkov} © (2009-05-27 16:38) [16]Можно еще попробывать так:
код из [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,"ЫЫЫЫЫ");
Я думаю автору этого будет достаточно)
← →
rect (2009-05-27 23:42) [17]
> Да, эту. Помогло?
>
Если нижеприведенный мною код правильный, то не работает :(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}
Вряд ли, так как фон у меня может содеражть несколько цветов
← →
rect (2009-05-27 23:44) [18]Придумал пока только следующий "извращённый" способ:
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;
Правда в этом случае качество шрифтов немного хромает :)
← →
KilkennyCat © (2009-05-27 23:46) [19]что, качество не сработало?
← →
KilkennyCat © (2009-05-27 23:46) [20]
> KilkennyCat © (27.05.09 23:46) [19]
fnt.lfQuality := 0; ?
← →
rect (2009-05-27 23:51) [21]
> что, качество не сработало?
не понял вопроса
> fnt.lfQuality := 0; ?
При любом значении параметра результат на экране абсолютно одинаков
← →
KilkennyCat © (2009-05-27 23:51) [22]Вообще, странная манера создания логфонта... стандартный пример:
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
← →
sniknik © (2009-05-27 23:58) [23]> Придумал пока только следующий "извращённый" способ:
блин, да выведи его на "подложку" без прозрачности, тот же битмап, и уже после назначь ему прозрачный цвет и рисуй с этой подложки туда куда надо.
ктати так и не понял, а нафига рисовать на прозрачном имедже? в чем тайный смысл?
← →
rect (2009-05-28 00:02) [24]
> sniknik
Может быть задам глупый вопрос, но что такое "подложка"?
← →
sniknik © (2009-05-28 00:15) [25]создай битмап динамически, не ложа его на форму, и считай его "подложкой" рисуй на нем. все что угодно, после перерисуй (Draw) с него куда надо.
← →
Германн © (2009-05-28 01:24) [26]Задача так до сих пор и непонятна.
С одной стороны нужно что-то выводить на "прозрачном" TImage. С другой стороны
> Вряд ли, так как фон у меня может содеражть несколько цветов
? "Прозрачный фон" не может содержать "несколько цветов"!
Или я что-то не понял?
← →
rect (2009-05-28 01:35) [27]Всем спасибо! Код из [17] работает правильно, просто я к своему стыду неправильно понял смысл параметра lfQuality :)
← →
rect (2009-05-28 01:46) [28]Для всех интересующихся подробнее опишу свою задачу: На форме есть один большой главный image в который будет загружаться цветная картинка. Далее поверх этого image будут создаваться динамические, в которых будет выводится текст и нужно, чтобы главная картинка оставалась видна (для этого и использую transparent)
← →
sniknik © (2009-05-28 01:53) [29]> поверх этого image будут создаваться динамические, в которых будет выводится текст
а TLabel не проще? он тоже может текст показывать...
← →
Германн © (2009-05-28 01:55) [30]
> rect (28.05.09 01:46) [28]
>
> Для всех интересующихся подробнее опишу свою задачу: На
> форме есть один большой главный image в который будет загружаться
> цветная картинка. Далее поверх этого image будут создаваться
> динамические, в которых будет выводится текст и нужно, чтобы
> главная картинка оставалась видна (для этого и использую
> transparent)
???
← →
Игорь Шевченко © (2009-05-28 02:02) [31]
> На форме есть один большой главный image в который будет
> загружаться цветная картинка. Далее поверх этого image будут
> создаваться динамические, в которых будет выводится текст
> и нужно, чтобы главная картинка оставалась видна (для этого
> и использую transparent)
Это не задача, это реализация задачи.
Ты к совету [25] прислушайся, а то потом будешь спрашивать, как прозрачную картинку поверх своего Image нарисовать или надпись шрифтом полупрозрачную сделать.
← →
Игорь Шевченко © (2009-05-28 02:15) [32]Германн © (28.05.09 01:55) [30]
> ???
http://cid-2fbfd926d50f54d0.skydrive.live.com/self.aspx/LabelEffect
← →
Германн © (2009-05-28 02:19) [33]
> Игорь Шевченко © (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:22) [34]
> Не аонял.
> Попробую понять завтра.
Картинки не видно ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.07.26;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.008 c