Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с пикселями в Image / 25 сообщений из 40, страница 1 из 2
16.06.2021, 08:15
    #40077825
Vit2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Всем Привет!
Не могу понять почему обрезает правую часть символа при размере примерно выше 18
Код: 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.
var
  X, Y: integer;
  Total,TotalY: Word;
  A: WORD;
  Str: string;
begin
  MAX_Y:=0;
  Image2.Canvas.Font := FontDialog.Font;
   Image2.Picture.Bitmap.PixelFormat := pf8bit;//pf8bit;
  Image2.Canvas.Brush.Style := bsClear; 
  for A :=32 to 77 do
  begin
    Image2.Canvas.Brush.Color:= clRed;
    Image2.Canvas.FillRect(Image2.Canvas.ClipRect);
    Image2.Canvas.TextOut(0, 0, String(Ansichar(A)));
    application.ProcessMessages;
    Str := '';
     for Y := 0 to Image2.Canvas.TextHeight(string(Ansichar(A))) - 1 do
    begin
      Total := 0;
      for X := 0 to Image2.Canvas.TextWidth(string(Ansichar(A)))-1  do
      begin
        if Image2.Canvas.Pixels[X, Y] <> clRed then // clFuchsia
        begin
          Total := Total or (1 shl X);
        end;
      end;
       Str := Str + '0x' + IntToHex(Total, 4) + ',';
    end;

    if A = 77 then
     Str := Str + '0x' + IntToHex(Image2.Canvas.TextWidth(string(Ansichar(A))), 4) + ''+'  // Ascii = [' + string(Ansichar(A)) + ']'
    else
    Str := Str + '0x' + IntToHex(Image2.Canvas.TextWidth(string(Ansichar(A))),4)+','+' // Ascii = [' + string(Ansichar(A)) + ']';
      Memo2.Lines.Add( Str);
...
Рейтинг: 0 / 0
16.06.2021, 08:32
    #40077827
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Потому что шрифт НЕ прозрачный
...
Рейтинг: 0 / 0
16.06.2021, 08:58
    #40077830
Vit2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
DimaBr,

Поясните

Забыл написать, это делается для библиотеке микроконтроллера, дисплей ILI9341
...
Рейтинг: 0 / 0
16.06.2021, 09:15
    #40077834
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Размер картинки какой?

Я в коде вижу только вывод в цикле в позицию (0, 0)
Vit2
Код: pascal
1.
Image2.Canvas.TextOut(0, 0, String(Ansichar(A)));

...
Рейтинг: 0 / 0
16.06.2021, 09:22
    #40077836
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Vit2
DimaBr,
Поясните

1. Шрифт не прозрачный и следующий символ затирает правую часть предыдущего символа
2. Размер буферной картинки меньше чем размер буквы и правая часть буквы прост не вмещается
...
Рейтинг: 0 / 0
16.06.2021, 09:31
    #40077839
Vit2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Размер Image 48x61
Размер символа 21х23
...
Рейтинг: 0 / 0
16.06.2021, 10:54
    #40077856
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
В показанном коде вы рисуете Букву на Image2, затем подсчитываете не Красные пиксели.
Код, который создаёт надпись из буковок в ряд не приведён.
...
Рейтинг: 0 / 0
16.06.2021, 12:09
    #40077872
Vit2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
DimaBr,

Код: pascal
1.
2.
3.
4.
5.
  for A :=32 to 77 do // цикл вертится и выводит, 77 это чтобы весь алфавит не перебирать. 
  begin
    Image2.Canvas.Brush.Color:= clRed;
    Image2.Canvas.FillRect(Image2.Canvas.ClipRect);
    Image2.Canvas.TextOut(0, 0, String(Ansichar(A)));



Или я что то не так делаю?
...
Рейтинг: 0 / 0
16.06.2021, 12:10
    #40077874
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
16.06.2021 12:09, Vit2 пишет:
> Или я что то не так делаю?

а где заданы атрибуты шрифта?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.06.2021, 12:20
    #40077878
Vit2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Мимопроходящий,

Код: pascal
1.
Image2.Canvas.Font := FontDialog.Font; // Тут выбираю
...
Рейтинг: 0 / 0
16.06.2021, 12:21
    #40077879
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Vit2Или я что то не так делаю?

Судя по всему ты вообще не понимаешь что делаешь. Поэтому и делаешь не то что нужно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.06.2021, 12:24
    #40077882
Vit2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Dimitry Sibiryakov,

Покажите как надо, буду очень благодарен.
Этот код я нашёл в гугл. Хочу доделать под себя но не получается.
...
Рейтинг: 0 / 0
16.06.2021, 12:31
    #40077884
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Vit2Покажите как надо

Сначала скажи ЧТО надо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.06.2021, 12:39
    #40077885
Vit2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Dimitry Sibiryakov,

Надо с каждого символа, получить координаты каждого пикселя и конвертировать в hex и вывести в memo.
...
Рейтинг: 0 / 0
16.06.2021, 12:42
    #40077886
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Зачем?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.06.2021, 12:43
    #40077888
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
16.06.2021 12:42, Dimitry Sibiryakov пишет:
> Зачем?

лаба
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.06.2021, 12:51
    #40077890
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Мимопроходящийлаба

На микроконтроллере?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.06.2021, 12:56
    #40077891
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
16.06.2021 12:51, Dimitry Sibiryakov пишет:
> На микроконтроллере?..

а чо?
у нас такие были.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.06.2021, 12:59
    #40077892
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Image2.Canvas.Brush.Style:=bsClear; перед textout да и все.
...
Рейтинг: 0 / 0
16.06.2021, 13:11
    #40077896
Vit2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Dimitry Sibiryakov

Зачем?


Микроконтроллер Stm32F4XX + Display ILI9341
Шрифт для дисплея.
...
Рейтинг: 0 / 0
16.06.2021, 13:15
    #40077898
Vit2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
...
Рейтинг: 0 / 0
16.06.2021, 13:18
    #40077900
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Цикл сканирования пикселей должен идти по всей ширине ClipRect (какая она, кстати?), а не
приближенным оценкам размера буквы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.06.2021, 13:25
    #40077902
Vit2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Выбор шрифта

Код: 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.
var
  X, Y: integer;
  A: WORD;
begin
   	Image1.Picture:= nil;
  Memo2.Clear;
  Image1.Canvas.Brush.Style := bsClear;
  if FontDialog.Execute then
  begin
    FONT_NAME := FontDialog.Font.Name;
    FONT_SIZE := FontDialog.Font.Size;
    MAX_X := 0;
    MAX_Y := 0;
    Image1.Canvas.Font := FontDialog.Font;
    // Поиск ширины и высоты максимальной
    for A := 30 to 255 do
    begin
      if MAX_X < Image1.Canvas.TextWidth(string(Ansichar(A))) then
        MAX_X := Image1.Canvas.TextWidth(string(Ansichar(A)));
      if MAX_Y < Image1.Canvas.TextHeight(string(Ansichar(A))) then
        MAX_Y := Image1.Canvas.TextHeight(string(Ansichar(A)));
    end;

    Label4.Caption := FONT_NAME;
    Label5.Caption := 'Размер: ' + IntToStr(FONT_SIZE) + 'x' +
      IntToStr(MAX_Y);
    Label8.Caption := IntToStr(MAX_X);

    X := 0;
    Y := 0;
    for A := 32 to 255 do
    begin
      Image1.Canvas.TextOut(X, Y, string(Ansichar(A)));
      X := X + Image1.Canvas.TextWidth(string(Ansichar(A)));
      if X + MAX_X > 700 then
      begin
        Y := Y + Image1.Canvas.TextHeight(string(Ansichar(A)));
        X := 0;
      end;
    end;
  end;



Отсюда размеры

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
    // Поиск ширины и высоты максимальной
    for A := 32 to 255 do
    begin
      if MAX_X < Image1.Canvas.TextWidth(string(Ansichar(A))) then
        MAX_X := Image1.Canvas.TextWidth(string(Ansichar(A)));
      if MAX_Y < Image1.Canvas.TextHeight(string(Ansichar(A))) then
        MAX_Y := Image1.Canvas.TextHeight(string(Ansichar(A)));
    end;
...
Рейтинг: 0 / 0
16.06.2021, 13:35
    #40077908
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Забей. Проще нагуглить готовый шрифт чем грабить системные. Всё равно в разрешении этого
дисплея будут смотреться отвратительно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.06.2021, 13:43
    #40077912
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с пикселями в Image
Vit2
Dimitry Sibiryakov

Зачем?


Микроконтроллер Stm32F4XX + Display ILI9341
Шрифт для дисплея.


а готовые чем не устраивают ?
https://stm32f4-discovery.net/2014/04/library-08-ili9341-lcd-on-stm32f429-discovery-board/
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с пикселями в Image / 25 сообщений из 40, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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