Новые книги

Маркетинг – это в большей степени искусство, чем наука. Но при этом вам необходимы определенные навыки, чтобы проводить успешные маркетинговые кампании, и знание конкретных техник, чтобы составлять разумные бизнес-планы. Эта книга научит вас и тому и другому.

Ричард Холл имеет огромный опыт в проведении маркетинговых кампаний. Главное в маркетинге, как считает автор, – это «быть у всех на устах». В своей книге он описывает главные приемы «партизанского» маркетинга, заключающиеся в ненавязчивом продвижении, когда потенциальные клиенты не подозревают, что стали объектом воздействия скрытой рекламы. Вы узнаете, как сделать товар соблазнительным для покупателя, не затрачивая миллионы, и какой эффект дают нестандартные рекламные носители.

«Маркетинг – это радость. Он неразрывно связан со всем, что составляет человеческую жизнь. Как правило, люди доставляют нам наибольшее удовольствие, и потому их изучение является делом чрезвычайно приятным» (Р. Холл).
В книгах по саморазвитию содержатся ответы на все вопросы, которые подкидывает нам жизнь. Но чтобы прочитать хотя бы половину из них, может не хватить и целой жизни. Эта книга – отличное решение для всех, кто ценит собственное время. Она содержит 27 подробных обзоров лучших произведений деловой литературы. Причем обзоров, составленных человеком, который всю жизнь занимается развитием личностных и бизнес-навыков. Станислав Логунов, эксперт в строительной отрасли, управленец с более чем двадцатилетним стажем, создатель блога «Сила знаний», выбрал и системно изложил все самое важное из содержащегося в 27 книгах, с которыми просто необходимо ознакомиться каждому успешному руководителю.

Вопрос и Ответ 11

Вопросы и Ответы


      11. Можно ли в Delphi вывести строку повернутую под любым углом?

      Стандартные средства Delphi не позволяют использовать вывод строки текста под произвольным углом, так как в модуле Graphics поля отвечающие за угол поворота строки принудительно обнуляются. Это приводит к необходимости использовать средства API.

      Наверное, лучший способ - это исправить модуль Graphics и разрешить использование произвольного угла поворота во всех объектах сразу. Но такой путь потребует перекомпиляции нескольких модулей и приведет к некорректной работе ваших кодов с другими версиями Delphi. Другой способ - написать процедуру вывода под углом и пользоваться ею при необходимости.

      Чтобы не нарушать существующий порядок вывода строки на экран, будем следовать следующим правилам:

      1. Все параметры шрифта, кроме угла - брать из объекта Font;
      2. Рисовать в контексте Canvas.

      Пример:

      ............

      PROCEDURE FreeTextOut(Canvas: TCanvas; X, Y, A: Integer; S: String);
      VAR

        OldFont, NewFont: hFont;
        lf : TLogFont;

      BEGIN

        {Создаем описание для нового шрифта.}
        WITH lf, Canvas DO BEGIN

          {Устанавливаем текущие для объекта Font параметры, кроме углов.}
          lfHeight := Font.Height;
          lfWidth := 0;
          lfEscapement := A*10; {Угол наклона строки в 0.1 градуса}
          lfOrientation := A*10; {Угол наклона символов в строке в 0.1 градуса}
          if fsBold in Font.Style then lfWeight := FW_BOLD

            else lfWeight := FW_NORMAL;

          lfItalic := Byte(fsItalic in Font.Style);
          lfUnderline := Byte(fsUnderline in Font.Style);
          lfStrikeOut := Byte(fsStrikeOut in Font.Style);
          lfCharSet := DEFAULT_CHARSET;
          StrPCopy(lfFaceName, Font.Name);
          lfQuality := DEFAULT_QUALITY;
          lfOutPrecision := OUT_DEFAULT_PRECIS;
          lfClipPrecision := CLIP_DEFAULT_PRECIS;
          lfPitchAndFamily := DEFAULT_PITCH;

        end;
        {Создаем новый шрифт}
        NewFont := CreateFontIndirect(lf);
        {Выбираем новый шрифт в контекст отображения}
        OldFont := SelectObject(Canvas.Handle, NewFont);
        {Выводим текст на экран ПОД ЗАДАННЫМ УГЛОМ}
        Canvas.TextOut(X, Y, S);
        {Восстанавливаем в контексте старый шрифт}
        SelectObject(Canvas.Handle, OldFont);
        {Удаляем новый шрифт}
        DeleteObject(NewFont);

      END;

      ............

      Созданную процедуру лучше всего оформить в виде модуля.

      Процедура работает аналогично процедуре TextOut, единственное - ей необходимо явно передавать контекст отображения:

    procedure FreeTextOut(Canvas: TCanvas; X, Y, A: Integer; S: String);

      где

      • Canvas - контекст (канва) отображения;
      • X, Y - соответствующие координаты;
      • A - угол поворота строки (в углах);
      • S - выводимая строка.

      Пример:

      ............

      FreeTextOut(Canvas, 100, 100, 45, 'Пример вывода под углом');

      ............

      P.S. Поворачивать можно только векторные и масштабируемые (True Type) шрифты. А шрифт System, используемый Delphi по умолчанию - растровый!


...предыдущая страница следующая...
оглавление



"Вопрос и Ответ 11"
Copyright © "В помощь Веб-Мастеру" (Alexander D. Belyaev) 2005-2024 .
При перепечатке любого материала видимая ссылка на источник "В помощь Веб-Мастеру" и все имена, ссылки авторов обязательны!
Время генерации страницы: 0.006