powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с пикселями в Image
25 сообщений из 40, страница 1 из 2
Проблема с пикселями в Image
    #40077825
Vit2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем Привет!
Не могу понять почему обрезает правую часть символа при размере примерно выше 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
Проблема с пикселями в Image
    #40077827
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что шрифт НЕ прозрачный
...
Рейтинг: 0 / 0
Проблема с пикселями в Image
    #40077830
Vit2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

Поясните

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

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

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

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

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

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

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

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

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

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

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

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

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

Зачем?


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

Код: 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
Проблема с пикселями в Image
    #40077908
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забей. Проще нагуглить готовый шрифт чем грабить системные. Всё равно в разрешении этого
дисплея будут смотреться отвратительно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проблема с пикселями в Image
    #40077912
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Vit2
Dimitry Sibiryakov

Зачем?


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


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


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