Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Зеркальное отображение  (Прочитано 11286 раз)
0 Пользователей и 1 Гость смотрят эту тему.
K.I.T.
Гость
« : 06-09-2004 11:34 » 

Кто-нибудь знает, как сделать так, чтобы текст в Label`е (или TextBox`е) отображался зеркально?
Заранее спасибо.
Записан
Var-Alex
Гость
« Ответ #1 : 08-09-2004 18:32 » 

Только рисовать в ручную.
Записан
Fenik
Гость
« Ответ #2 : 27-09-2004 19:10 » 

Код:
function InvertS(const s: string): string;
var I, L: Integer;
begin
  L := Length(s);
  SetLength(Result, L);
  for i := 0 to L do
    Result[i] := s[L-i];
end;

Label1.Caption := InvertS(Label1.Caption);
Так что ли? Улыбаюсь)
« Последнее редактирование: 01-12-2007 13:32 от Алексей1153++ » Записан
K.I.T.
Гость
« Ответ #3 : 28-09-2004 09:09 » 

Fenik, этот код преобразует строку "Fenik" -> "kineF".
Нужно именно зеркальное отображение (буквы тоже развёрнуты).
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #4 : 28-09-2004 12:42 » 

штатными средствами дельфей это вряд ли удасться. но можно сделать так (на форме лежат Edit1, Button1 и Image1 с AutoSize = TRUE):

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  bmp, bmp2: TBitmap;
  Col, Row: integer;
begin
  bmp := TBitmap.Create;
  try
    bmp.Width := Edit1.Width;
    bmp.Height := Edit1.Height;
    bmp.Canvas.Font := Edit1.Font;
    bmp.Canvas.TextOut(0, 0, Edit1.Text);
    bmp2 := TBitmap.Create;
    try
      bmp2.Width := bmp.Width;
      bmp2.Height := bmp.Height;
      for Col := 0 to bmp.Width - 1 do
        for Row := 0 to bmp.Height - 1 do
          bmp2.Canvas.Pixels [Col, Row] := bmp.Canvas.Pixels [bmp.Width - Col - 1, Row];
      Image1.Picture.Bitmap.Assign (bmp2);
    finally
      bmp2.Free;
    end;
  finally
    bmp.Free;
  end;
end;
« Последнее редактирование: 01-12-2007 13:33 от Алексей1153++ » Записан

Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 29-09-2004 09:33 » 

Путь для правильного (ИМХО) варианта:
1. зарегитрировать в системе новый виртуальный шрифт
2. нарисовать его зеркальным
3. использовать его для метки

посмотреть, как работать с подобными вещами можно в любой компоненте, которая умеет (например) поворачивать текст на определенный заднный угол.
Точно помню, что это было описано в книге Рея Конопки "Создание собственных компонет в среде Дельфи" (тогда еще Дельфи 1)
Скорее всего в компонентах RxLib это тоже используется
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #6 : 30-09-2004 07:25 » 

Kivals, не совсем понял. как предполагается "рисовать его зеркальным"? компоненты типа RxLib'овских просто получают дескриптор фонта через функцию CreateFont, в которой можно задать угол вывода, но зеркальным шрифт от этого не станет - как не переворачивай, например, букву "F", хоть верх ногами, она просто останется буквой "F". только перевёрнутой Улыбаюсь
Записан

Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 30-09-2004 08:23 » 

x77
Чесно говоря - не знаю. Предполагал, что есть кроме угла поворота еще и флаг отражения
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines