Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 21.06.2019, 12:15   #21
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,805
Репутация: 6622
По умолчанию

Там же не просто произвольная картинка. А конкретные области куда текст помещается и нет ни какого изображения, которое нужно восстанавливать. Вот они и чистятся при удалении буквы, например методом Rectangle . В принципе если нужно восстановить изображение на этом участке можно и методом CopyRect . Картинку посмотрел в теме по ссылке из #16, rar-ом не пользуюсь и нет его у меня )
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 21.06.2019, 12:15   #22
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,626
Репутация: 5617
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
А Как в этой программе буквы стираются?
а кто же его знает. скорее всего в тех прямоугольничках, куда буквы выводятся выводится чистый белый прямоугольник через Canvas.FillRect();
кстати, буквы тоже выводятся не подряд, а каждая буква в свою отдельную позицию, в свой прямоугольник.

p.s. нарисовал внутри прямоугольников залитые области. Сразу видно, что выводится буква на непрозрачном белом фоне и затирается прямоугольником (или пробелом)

Последний раз редактировалось Serge_Bliznykov; 21.06.2019 в 12:29.
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 21.06.2019, 12:42   #23
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 417
Репутация: 15
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
...

p.s. нарисовал внутри прямоугольников залитые области. Сразу видно, что выводится буква на непрозрачном белом фоне и затирается прямоугольником (или пробелом)
Вот так?:
Код:
     with Image1.Canvas do
      begin
          Brush.Style := bsClear;
          Font.Size:=19;
          Font.Name:='Lucida Console';
          Font.Color:=clBlack;
          FillRect(rect(520,500,10,10));
          Font.Style:= Image1.Canvas.Font.Style + [fsBold];
          s:=Edit1.Text;

          for i:=1 to length(s) do
             TextOut(273,378,s);
      end;
Женя32 вне форума   Ответить с цитированием
Старый 21.06.2019, 13:00   #24
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,626
Репутация: 5617
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
Вот так?:
нет

нужно каждую букву выводить отдельно

вот так
Цитата:
Сообщение от Pavia Посмотреть сообщение
Код:
S:=Edit1.Text;
    PenPos:=Point(10,10);
    for i:=1 to Length(S) do
      TextOut(PenPos.X+Ofs, PenPos.Y, S[i]);
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 21.06.2019, 13:05   #25
Pavia
Лис
Профессионал
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 1,824
Репутация: 1974
По умолчанию

Допустим в Edit.Text="двадцатичетырехбуквенное " слово. И вам нужно удалить или вставит четвёртую букву. Тогда вам придётся стереть те буквы, что с права и перерисовать их заново. И никак иначе.

Цитата:
Сообщение от Женя32 Посмотреть сообщение
Вопрос! Как она ищет позицию для вставки букв?
Перебором. Но Вам до этой программы как пешком до Урала.
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 21.06.2019 в 13:08.
Pavia вне форума   Ответить с цитированием
Старый 21.06.2019, 13:27   #26
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,805
Репутация: 6622
По умолчанию

Почему бы так не сделать, и проще и по силам:
Код:
type
  TForm1 = class(TForm)
    Image1: TImage;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    StaticText5: TStaticText;
    StaticText6: TStaticText;
    StaticText7: TStaticText;
    StaticText8: TStaticText;
    StaticText9: TStaticText;
    StaticText10: TStaticText;
    Label1: TLabel;
    Edit1: TEdit;
    procedure Edit1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var lSurname: array[1..10] of TStaticText;

procedure TForm1.FormCreate(Sender: TObject);
begin
  lSurname[1]:=StaticText1;
  lSurname[2]:=StaticText2;
  lSurname[3]:=StaticText3;
  lSurname[4]:=StaticText4;
  lSurname[5]:=StaticText5;
  lSurname[6]:=StaticText6;
  lSurname[7]:=StaticText7;
  lSurname[8]:=StaticText8;
  lSurname[9]:=StaticText9;
  lSurname[10]:=StaticText10;
end;

procedure TForm1.Edit1Change(Sender: TObject);
var i: Integer;
begin
  for i:=1 to 10 do
    if i<=Length(Edit1.Text)
      then lSurname[i].Caption:=Edit1.Text[i]
      else lSurname[i].Caption:='';
end;
Подготовку массива тоже можно в цикле )
Изображения
 
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 21.06.2019, 21:39   #27
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 417
Репутация: 15
Счастье

Да, я же как-то делал.... но не помню как... Вот нашел ехе файл от старого проекта... Посмотрите пожалуйста, может скажите как это делается....


в файле Касперский определил троян.
Удалил вложение Form.exe от греха подальше!
Form\Form.exe обнаружено: троянская программа 'HEUR:Trojan.Win32.Agent.gen' (модификация)
Модератор

Последний раз редактировалось Serge_Bliznykov; 22.06.2019 в 09:45.
Женя32 вне форума   Ответить с цитированием
Старый 22.06.2019, 03:16   #28
northener
Профессионал
 
Регистрация: 15.07.2013
Сообщений: 1,511
Репутация: 477
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
Да, я же как-то делал.... но не помню как...
До боли знакомое утверждение на наших форумах.
Если для вас создание программ это не одноразовая работа, то хоть как-то запоминайте где вы какой код нарыли. Кто же вам по ЕХЕ-шнику сможет что-то сказать.
northener вне форума   Ответить с цитированием
Старый 23.06.2019, 20:10   #29
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 417
Репутация: 15
Счастье

Приветствую!
В общем, решения этой задаче, почти, нашел! Буквы закрашиваются, кроме 1-ой.
Я не могу понять, как это исправить.
Пожалуйста, помогите решить эту задачу.
Вложения
Тип файла: rar Test.rar (2.57 Мб, 15 просмотров)
Женя32 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
public void someMethod() { this.run = false; Canvas canvas = null; doDraw(canvas); Tatana Java Мобильная разработка (Android) 10 15.12.2016 13:05
Delphi DX10 вывод текста на Canvas vohuanrok Общие вопросы Delphi 10 13.05.2016 11:44
Форматированный вывод текста в Edit mak15 Общие вопросы C/C++ 4 14.12.2015 18:29
TreeView, Canvas, Вывод текста Kotaries Общие вопросы Delphi 1 18.07.2014 18:16
Вывод в edit текста с переменной NecroSlider Общие вопросы C/C++ 4 29.07.2008 14:42


13:44.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru