Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1243283409
Юрий
2009-05-26 00:30
2009.07.26
С днем рождения ! 26 мая 2009 вторник


2-1243489065
lewka
2009-05-28 09:37
2009.07.26
Работа с IP-адресом


4-1213084981
REA
2008-06-10 12:03
2009.07.26
QIP alike Hint Window


2-1244032588
Pavlov
2009-06-03 16:36
2009.07.26
try except


15-1243085085
Gooseman
2009-05-23 17:24
2009.07.26
Компьютерный глюк или вирус... Как лечить?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский