Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Канва (работа с текстом), Канва (работа с текстом) 
:(
    Опции темы
rthsobakas
Дата 29.5.2008, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 562
Регистрация: 20.9.2007

Репутация: нет
Всего: -1



Вообщем я искал как перевернуть текст инашел такую статью(на делфи)

Цитата

Для того чтобы вывести текст под углом, вытянуть или сжать его нужно воспользоваться структурой LOGFONT. Здесь показаны не все ее возможности, но, на мой взгляд, самые интересные. 

procedure TForm1.FormPaint(Sender: TObject); 
var 
  lf: TLogFont; 
begin 
  FillChar(lf, SizeOf(lf), 0); 
  with lf do begin 
    // Высота буквы 
    lfHeight := 15; 

    // Ширина буквы 
    lfWidth := 20; 

    // Угол наклона в десятых градуса 
    lfEscapement := 100; 

     // Жирность 0..1000, 0 - по умолчанию 
    lfWeight := 1000; 

    // Курсив 
    lfItalic := 0; 

    // Подчеркнут 
    lfUnderline := 1; 

    // Зачеркнут 
    lfStrikeOut := 1; 

    // CharSet 
    lfCharSet := RUSSIAN_CharSet; 

    // Название шрифта 
    StrCopy(lfFaceName, 'Arial'); 
  end; 
  with Form1.Canvas do begin 
    FillRect(ClipRect); 
    Font.Handle := CreateFontIndirect(lf); 
    TextOut(0, 100, 'It is a text string'); 
  end; 
end; 


Автор: Pegas 

Взято с Vingrad.ru http://forum.vingrad.ru 





то же самое пытался перевести на с++
Цитата

/---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{

   TLogFont lf;
    // Высота буквы
    lf.lfHeight = 12;
    // Ширина буквы 
    lf.lfWidth = 10;
    // Угол наклона в десятых градуса 
    lf.lfEscapement = 900;
     // Жирность 0..1000, 0 - по умолчанию 
    lf.lfWeight = 0;
    // Курсив 
    lf.lfItalic = 0;
    // Подчеркнут 
    lf.lfUnderline = 0;
    // Зачеркнут 
    lf.lfStrikeOut = 0;

    // Название шрифта
    lf.lfFaceName[10]= *"GOST type B";

    Form1->Canvas->Font->Handle = CreateFontIndirect(&lf);
    Form1->Canvas->TextOut(200, 300, "It is a text string");

}


Проблемы возникли с lf.lfFaceName[10]= *"GOST type B";
(Здесь 10 как я понял это длина строки должна быть)

Почему то шрифт не меняется! Что не так я сделал?

PM   Вверх
Lazin
Дата 29.5.2008, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



Цитата(rthsobakas @  29.5.2008,  16:22 Найти цитируемый пост)
lf.lfFaceName[10]= *"GOST type B";

lf.lfFaceName = "GOST type B";

ошибки какие?
PM MAIL Skype GTalk   Вверх
rthsobakas
Дата 29.5.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 562
Регистрация: 20.9.2007

Репутация: нет
Всего: -1




Цитата

ошибки какие?

ошибок нет, просто всместо ГОСТовского шрифта Ариал рисуется.


Код

lf.lfFaceName = "GOST type B";


Если так написать,  то ошибку выдаст(не помню какую на другом ПК прога). Звездочку я методом тыка написали прокатило(типо * это переменая по адрессу).
Потом  lf.lfFaceName[???] ХЗ че тут писать, но как я понял длину назвaния шрифта(там тип CHAR используется).

PM   Вверх
586
Дата 29.5.2008, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Код
strcpy(lf.lfFaceName, "GOST type B");

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.