Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблемы с transparent


Страницы:   1 2

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]

Да, эту. Помогло?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо