powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
55 сообщений из 55, показаны все 3 страниц
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691287
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользуюсь Graphics32 - оно не умеет.
Подпорки ставить можно - но будет медленно.

Есть идеи?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691296
под ван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всегда делал это через
Код: pascal
1.
Assign

- моментом делалось даже когда счёт шёл на тысячи.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691297
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
под ван,

assign чего куда?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691351
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatПользуюсь Graphics32 - оно не умеет.
Подпорки ставить можно - но будет медленно.

Есть идеи?
чо ты трындишь, если бибиотека G32 заточена именно под 32 бита ?
всегда там текст выводился с альфа-каналом, там даже демки есть
а не рукожоп ли ты ?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691373
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

текст не любит альфу, клеартайпу нужно знать что там вокруг
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691374
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorчо ты трындишь, если бибиотека G32 заточена именно под 32 бита ?
всегда там текст выводился с альфа-каналом, там даже демки есть
а не рукожоп ли ты ?Если ты не в теме, не значит что остальные не в теме.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure TBitmap32.Textout(X, Y: Integer; const Text: String);
begin
  (FBackend as ITextSupport).Textout(X, Y, Text);
end;

procedure TGDIBackend.Textout(X, Y: Integer; const Text: String);
var
  Extent: TSize;
begin
  UpdateFont;

  if not FOwner.MeasuringMode then
  begin
    if FOwner.Clipping then
      ExtTextout(Handle, X, Y, ETO_CLIPPED, @FOwner.ClipRect, PChar(Text), Length(Text), nil)
    else
      ExtTextout(Handle, X, Y, 0, nil, PChar(Text), Length(Text), nil);
  end;

  Extent := TextExtent(Text);
  FOwner.Changed(MakeRect(X, Y, X + Extent.cx + 1, Y + Extent.cy + 1));
end;


ExtTextout - это простой GDI.
Альфаканал оно не умеет.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691375
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На 32 битную битмапку GDI текст выводит, но альфаканал при этом забивает мусором.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691376
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

а что ты собственно хочешь видеть в альфе при выводе текста?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691380
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkov,

У меня сгенеренные png-шки с текстом которые я вывожу поверх jpg-ов на веб-страничке.

Хочу чтобы антиалиасинг по краям текста в png гармонично смотрелся на общей картине.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691382
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть вариант рендерить текст на отдельный битмап с равномерным фоном, а потом рендерить его на главный, получая альфу с помощью простой математики, но это медленно.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691384
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и до кучи еще альфа от антиалисинга текста при рендере должна склеиваться с цветами и альфой уже существующими на растре png-шки от рисования других полупрозрачных и сглаженных примитивов не ней.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691388
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

а, ну понятно, я уже проходил. У меня ничего не вышло, нужно рисовать именно по тому фону где будет в итоге, попытки рисовать по прозрачному и накладывать ведут к корявому тексту, чем не рисуй - DirectX, GDI, GDI+
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691399
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С обычной графикой-то выходит, тогда почему не может выйти с текстом?

Главная проблема - найти быструю библиотеку для рендера текста.

Например вот так - все ок. Но медленно.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TCanvasEx.TextOutEx(X, Y: Integer; const Text: string);
var
  Intf: ITextToPathSupport;
  Path: TFlattenedPath;
begin
  Path := TFlattenedPath.Create;
  try
    if Supports(FG32.Backend, ITextToPathSupport, Intf) then
    begin
      Intf.TextToPath(Path,X,Y,Text);
      PolyPolygonFS(FG32,Path.Path, Font.Color32);
    end;
  finally
    Path.Free;
  end;
end;
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691402
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

глифы сделай, быстрее и качественнее не будет

с метриками текста повозиться правда придётся
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691403
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)с метриками текста повозиться правда придётсяЭто и пугает.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691405
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и некоторые сомнения у меня в том рендер туевой хучи битмапок-букв - это быстро.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691410
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

cleartype он многоцветный, а с path максимум антиалисинг будет
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691422
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне в целом и приличного антиалиасинга бы хватило.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691454
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatdefecatorчо ты трындишь, если бибиотека G32 заточена именно под 32 бита ?
всегда там текст выводился с альфа-каналом, там даже демки есть
а не рукожоп ли ты ?Если ты не в теме, не значит что остальные не в теме.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure TBitmap32.Textout(X, Y: Integer; const Text: String);
begin
  (FBackend as ITextSupport).Textout(X, Y, Text);
end;

procedure TGDIBackend.Textout(X, Y: Integer; const Text: String);
var
  Extent: TSize;
begin
  UpdateFont;

  if not FOwner.MeasuringMode then
  begin
    if FOwner.Clipping then
      ExtTextout(Handle, X, Y, ETO_CLIPPED, @FOwner.ClipRect, PChar(Text), Length(Text), nil)
    else
      ExtTextout(Handle, X, Y, 0, nil, PChar(Text), Length(Text), nil);
  end;

  Extent := TextExtent(Text);
  FOwner.Changed(MakeRect(X, Y, X + Extent.cx + 1, Y + Extent.cy + 1));
end;



ExtTextout - это простой GDI.
Альфаканал оно не умеет.

Родная демка RenderText_Ex с тобой несогласна
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691456
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Найди здесь то, что ты написал выше
Не знаю, куда ты смотришь

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
procedure TBitmap32.RenderText(X, Y: Integer; const Text: string; AALevel: Integer; Color: TColor32);
var
  B, B2: TBitmap32;
  Sz: TSize;
  C, Alpha: TColor32;
  I: Integer;
  P: PColor32;
  StockCanvas: TCanvas;

  procedure ScaleDown(N: Integer); // use only the blue channel
  var
    I, J, X, Y, P, Q, Sz, S: Integer;
    Src: PColor32;
    Dst: PColor32;
  begin
    Sz := 1 shl N - 1;
    Dst := B.PixelPtr[0, 0];
    for J := 0 to B.Height - 1 do
    begin
      Y := J shl N;
      for I := 0 to B.Width - 1 do
      begin
        X := I shl N;
        S := 0;
        for Q := Y to Y + Sz do
        begin
          Src := B2.PixelPtr[X, Q];
          for P := X to X + Sz do
          begin
            S := S + Integer(Src^ and $000000FF);
            Inc(Src);
          end;
        end;
        S := S shr N shr N;
        Dst^ := TColor32(S shl 24) + Color;
        Inc(Dst);
      end;
    end;
  end;

begin
  if Empty then Exit;

  Alpha := Color shr 24;
  Color := Color and $00FFFFFF;
  AALevel := Constrain(AALevel, 0, 4);

  B := TBitmap32.Create;
  try
    if AALevel = 0 then
    begin
      Sz := TextExtent(Text + ' ');
      B.SetSize(Sz.cX, Sz.cY);
      B.Font := Font;
      B.Clear(0);
      B.Font.Color := clWhite;
      B.Textout(0, 0, Text);

      // convert blue channel to alpha and fill the color
      P := @B.Bits[0];
      for I := 0 to B.Width * B.Height - 1 do
      begin
        C := P^;
        if C <> 0 then
        begin
          C := P^ shl 24; // transfer blue channel to alpha
          C := C + Color;
          P^ := C;
        end;
        Inc(P);
      end;
    end
    else
    begin
      StockCanvas := StockBitmap.Canvas;
      StockCanvas.Lock;
      try
        StockCanvas.Font := Font;
        StockCanvas.Font.Size := Font.Size shl AALevel;
        Sz := StockCanvas.TextExtent(Text + ' ');
        Sz.Cx := (Sz.cx shr AALevel + 1) shl AALevel;
        B2 := TBitmap32.Create;
        try
          B2.SetSize(Sz.Cx, Sz.Cy);
          B2.Clear(0);
          B2.Font := StockCanvas.Font;
          B2.Font.Color := clWhite;
          B2.Textout(0, 0, Text);
          B2.StretchFilter := sfLinear;
          B.SetSize(Sz.cx shr AALevel, Sz.cy shr AALevel);
          ScaleDown(AALevel);
        finally
          B2.Free;
        end;
      finally
        StockCanvas.Unlock;
      end;
    end;

    B.DrawMode := dmBlend;
    B.MasterAlpha := Alpha;

    B.DrawTo(Self, X, Y);
  finally
    B.Free;
  end;
end;

...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691464
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatДа и некоторые сомнения у меня в том рендер туевой хучи битмапок-букв - это быстро.это чудовищно быстро по сравнеию с любой векторной растеризацией

про ClearType конечно придётся забыть, только антиалиасинг
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691591
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Какие буквы в слове "быстро" тебе не понятны?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691599
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorНайди здесь то, что ты написал выше
Не знаю, куда ты смотришь

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
procedure TBitmap32.RenderText(X, Y: Integer; const Text: string; AALevel: Integer; Color: TColor32);
<..>
  B := TBitmap32.Create;
  try
    if AALevel = 0 then
    begin
      Sz := TextExtent(Text + ' ');
      B.SetSize(Sz.cX, Sz.cY);
      B.Font := Font;
      B.Clear(0);
      B.Font.Color := clWhite;
      B.Textout(0, 0, Text);  // Это по твоему что?

      // convert blue channel to alpha and fill the color
      P := @B.Bits[0];
      for I := 0 to B.Width * B.Height - 1 do
      begin
        C := P^;
<..>
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691613
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)это чудовищно быстро по сравнеию с любой векторной растеризацией
Мда? А мне практика показывала иное.
В винде шрифтовый движек просто ну ОЧЕНЬ быстр. Поднимаю шляпу перед создателями.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691631
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatdefecatorНайди здесь то, что ты написал выше
Не знаю, куда ты смотришь

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
procedure TBitmap32.RenderText(X, Y: Integer; const Text: string; AALevel: Integer; Color: TColor32);
<..>
  B := TBitmap32.Create;
  try
    if AALevel = 0 then
    begin
      Sz := TextExtent(Text + ' ');
      B.SetSize(Sz.cX, Sz.cY);
      B.Font := Font;
      B.Clear(0);
      B.Font.Color := clWhite;
      B.Textout(0, 0, Text);  // Это по твоему что?

      // convert blue channel to alpha and fill the color
      P := @B.Bits[0];
      for I := 0 to B.Width * B.Height - 1 do
      begin
        C := P^;
<..>


if AALevel = 0 then
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691634
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatdefecator,

Какие буквы в слове "быстро" тебе не понятны?

мне всё понятно
rgreatПользуюсь Graphics32 - оно не умеет.
Подпорки ставить можно - но будет медленно.
Есть идеи?

есть идея, что подпорка не нужна, всё уже встроено
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691810
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatkealon(Ruslan)это чудовищно быстро по сравнеию с любой векторной растеризацией
Мда? А мне практика показывала иное.
В винде шрифтовый движек просто ну ОЧЕНЬ быстр. Поднимаю шляпу перед создателями.Плохая практика, что-то вы не так делаете, мой 15-летний опыт по оптимизации вывода текста говорит об обратном
"Очень хорошая оптимизация" винды накладывает очень серьёзные ограничения с которыми вы и столкнулись

не разбираться с метриками помогает GetTextExtentExPoint

для созданием глифа вполне подойдёт хак из 21650246

итого, всё уже есть, осталось закодить
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691812
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)итого, всё уже есть, осталось закодитьЕсть-то оно есть, но хотелось бы "быстро".
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691832
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatkealon(Ruslan)итого, всё уже есть, осталось закодитьЕсть-то оно есть, но хотелось бы "быстро".

RenderText чем тебя не устраивает ?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691843
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Временным промежуточным растром.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691844
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatdefecator,

Временным промежуточным растром.

"капризам, словом, нет конца" (с)
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691845
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Повторюсь: Какие буквы в слове "быстро" тебе не понятны?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691850
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatdefecator,

Повторюсь: Какие буквы в слове "быстро" тебе не понятны?

мне пофигу на твои буквы.

rgreatПользуюсь Graphics32 - оно не умеет

Я тебе показал, что умеет.

код есть, переделай его так, как тебе надо
это тебе не генериками пользоваться
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691854
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatdefecator,

Временным промежуточным растром.глифы - это постоянный промежуточный растр, кеш в обычном понимании
куда быстрее то?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691862
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

Ну пока это теоретически самый перспективный вариант.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691863
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorмне пофигу на твои буквы.Нафига ты тогда тут нужен?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691865
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatkealon(Ruslan),

Ну пока это теоретически самый перспективный вариант.ну и зачем дело стало?
там исходников строчек 300 в кросс-платформенном варианте
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691868
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatdefecatorмне пофигу на твои буквы.Нафига ты тогда тут нужен?
чтобы тыкнуть тебя носом в готовый функционал в библиотеке, которой ты пользуешься
может быть, даже матчасть глубже изучишь
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691869
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

А вдруг есть готовая библиотека для рендера полу-прозрачных текстов на полупрозрачный фон?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691872
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatkealon(Ruslan),

А вдруг есть готовая библиотека для рендера полу-прозрачных текстов на полупрозрачный фон?
такой библиотекой ты уже пользуешься
rgreatПользуюсь Graphics32
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691873
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Ты всех вокруг тупыми считаешь или только меня?

Если 2-е, то я принцип работы "готового функционала в библиотеке" написал ещё вчера .

Но чукча не читатель, видимо.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691883
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatdefecator,

Ты всех вокруг тупыми считаешь или только меня?

Если 2-е, то я принцип работы "готового функционала в библиотеке" написал ещё вчера .

Но чукча не читатель, видимо.

нет
ты попытался указать мне, что такого функционала нет 21650095 , и всё идёт через GDI
а я тебе показал, что такой функционал есть 21650246 и 21650249
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691885
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Для тех кто в танке: Graphics32 меня не устраивает по скорости.

Еще тупые вопросы будут?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691886
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)не разбираться с метриками помогает GetTextExtentExPoint

можно и разбираться

Я использовал примерно такое для собственного вывода наклонного текста
Код: pascal
1.
GetGlyphOutline(CanvasDC, Ord(C), GGO_METRICS, Metrics, 0, nil, Mat);



вполне все было шустро
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691893
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейдkealon(Ruslan)не разбираться с метриками помогает GetTextExtentExPoint

можно и разбираться

Я использовал примерно такое для собственного вывода наклонного текста
Код: pascal
1.
GetGlyphOutline(CanvasDC, Ord(C), GGO_METRICS, Metrics, 0, nil, Mat);



вполне все было шустроДык: 21650145

Но рендер такого полигона сильно тормозит.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691895
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatdefecator,

Для тех кто в танке: Graphics32 меня не устраивает по скорости.

Ну конечно, а раньше ты утверждал, что Graphics32 вообще такого не умеет
Переобуваешься на лету !
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691909
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Танкист, заголовок темы прочтитай. Там даже "(!)" есть.
Или ты выборочно все читаешь?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691910
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatdefecator,

Танкист, заголовок темы прочтитай. Там даже "(!)" есть.
Или ты выборочно все читаешь?

rgreatdefecatorчо ты трындишь, если бибиотека G32 заточена именно под 32 бита ?
всегда там текст выводился с альфа-каналом, там даже демки есть
а не рукожоп ли ты ?Если ты не в теме, не значит что остальные не в теме.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure TBitmap32.Textout(X, Y: Integer; const Text: String);
begin
  (FBackend as ITextSupport).Textout(X, Y, Text);
end;

procedure TGDIBackend.Textout(X, Y: Integer; const Text: String);
var
  Extent: TSize;
begin
  UpdateFont;

  if not FOwner.MeasuringMode then
  begin
    if FOwner.Clipping then
      ExtTextout(Handle, X, Y, ETO_CLIPPED, @FOwner.ClipRect, PChar(Text), Length(Text), nil)
    else
      ExtTextout(Handle, X, Y, 0, nil, PChar(Text), Length(Text), nil);
  end;

  Extent := TextExtent(Text);
  FOwner.Changed(MakeRect(X, Y, X + Extent.cx + 1, Y + Extent.cy + 1));
end;



ExtTextout - это простой GDI.
Альфаканал оно не умеет.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691911
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatkealon(Ruslan),

А вдруг есть готовая библиотека для рендера полу-прозрачных текстов на полупрозрачный фон?векторные шрифты задаются безье кривыми, их растеризация всегда медленная

AggPas посмотри, там честный рендер
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691922
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorты утверждал, что Graphics32 вообще такого не умеет
"Вообше не умеет" - это голоса у тебя в голове.

Быстро не умеет.
А медленнно мне не надо.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691927
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatdefecatorты утверждал, что Graphics32 вообще такого не умеет
"Вообше не умеет" - это голоса у тебя в голове.

Быстро не умеет.
А медленнно мне не надо.

не видно, какая скорость "медленная" и сколько надо "быстро"
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691931
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorне видно, какая скорость "медленная" и сколько надо "быстро"RenderText - это медленно. TextOut - это быстро.
Надо - чем быстрей тем лучше.
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691945
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)векторные шрифты задаются безье кривыми, их растеризация всегда медленная

AggPas посмотри, там честный рендерА для нее есть паскалевская обертка?
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39691959
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatkealon(Ruslan)векторные шрифты задаются безье кривыми, их растеризация всегда медленная

AggPas посмотри, там честный рендерА для нее есть паскалевская обертка?

Сам нашел. Если кому интересно: https://github.com/CWBudde/AggPasMod
...
Рейтинг: 0 / 0
Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
    #39692002
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rgreatrgreatпропущено...
А для нее есть паскалевская обертка?

Сам нашел. Если кому интересно: https://github.com/CWBudde/AggPasMod
Годнота !
...
Рейтинг: 0 / 0
55 сообщений из 55, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как быстро(!) рисовать текст на битмапку с учетом альфа канала?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]