powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Почему происходит искажение глифа при вставке в канву?
5 сообщений из 55, страница 3 из 3
Почему происходит искажение глифа при вставке в канву?
    #39192576
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борисrgreat,
Забыл сказать спасибо
Может доточу как-нибудь, когда время будет.
Выложи как допилишь. :)
...
Рейтинг: 0 / 0
Почему происходит искажение глифа при вставке в канву?
    #39192735
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисВсе не смотрел, но для растров время явно неправильно считается. Их нужно прямо на экран рендерить, иначе ускорители нифига не задействуются.Рендер на экран - это весьма частный случай использования графических библиотек.
Не комильфо.
...
Рейтинг: 0 / 0
Почему происходит искажение глифа при вставке в канву?
    #39192762
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatРендер на экран - это весьма частный случай использования графических библиотек. Не комильфо. Очень даже комильфо если нужна скорость (а мы, собственно, о ней речь ведем).
Помимо ускорения алгоритма отрисовки, еще будет существенное ускорение когда нужно прорисовать только невалидный фрагмент.
Можно, конечно, его и в буфере учитывать, но сильно сомневаюсь, что кто-нибудь это делает.
...
Рейтинг: 0 / 0
Почему происходит искажение глифа при вставке в канву?
    #39192763
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Direct2D учитывает.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Почему происходит искажение глифа при вставке в канву?
    #40118601
SergSVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подниму тему. Новую не хочется создавать.
Есть проект на XE8 - считывает иконки из базы в TImsgeList. Получаемая картинка с тулбаром и простой код ниже

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
var
  FIcon: TIcon;
  FStream: TStream;
...
  FStream:=TMemoryStream.Create;
  Try
    TBlobField(FieldByName('icon')).SaveToStream(FStream);
    FStream.Position:=0;
    FIcon:=TIcon.Create;
    Try
      FIcon.LoadFromStream(FStream);
      FImageList.Height:=32;
      FImageList.Width:=32;
      FImageList.ColorDepth:=cd32Bit;
      FImageList.AddIcon(FIcon);
    Finally
      FIcon.Free;
    end;
  Finally
    FStream.Free;
  end;
...



Все работает без артефактов с полной прозрачностью. Собрал проект на Rio - полезли артефакты связанные скорее всего с прозрачностью. Попробовал иконку копировать в TBitmap через код содранный из ImgEdit.pas

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
var
  NewBitmap: TBitmap;
...
begin
  NewBitmap := TBitmap.Create;
  try
    NewBitmap.PixelFormat := pf32bit;
    NewBitmap.Height := FIcon.Height;
    NewBitmap.Width := FIcon.Width;
    NewBitmap.Canvas.Brush.Color := clWhite;
    NewBitmap.Canvas.FillRect(NewBitmap.Canvas.ClipRect);
    NewBitmap.Canvas.Draw(0, 0, FIcon);
    FImageList.AddMasked(NewBitmap, clWhite);
  finally
    NewBitmap.Free;
  end;
...



Но слабо заметные контурные артефакты белого цвета остались. Полной прозрачности как на XE8 нет...
Кто что посоветует ?
Приложенная картинка из Rio и с начальным кодом. Если код с NewBitmap - только легкая белая окантовка в некоторых местах иконок.
...
Рейтинг: 0 / 0
5 сообщений из 55, страница 3 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Почему происходит искажение глифа при вставке в канву?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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