ISPicture2

DLL ISPicture2 13-02-2014

Нет прав для скачивания

sergey3695

Ветеран
Модератор
WelcomeLabel1.Font.Handle := IsPicReFont(WelcomeLabel1.Font.Height, FW_BOLD, False);
Вместо FW_BOLD поставь 100 и увидешь что робит.
 

sergey3695

Ветеран
Модератор
Shift85, Врубился :rofl:
Код:
WelcomeLabel1.Font.Handle := IsPicReFont(WelcomeLabel1.Font.Height, 1000, False);
with WelcomeLabel1 do begin
//
end;
вот так робит. :)
 

Shift85

Старожил
Без этой строчки WelcomeLabel1.Font.Handle := IsPicReFont(WelcomeLabel1.Font.Height, FW_BOLD, False);

464211f88d.jpg

С этой строчкой WelcomeLabel1.Font.Handle := IsPicReFont(WelcomeLabel1.Font.Height, FW_BOLD, False);

41209661d7.jpg

Шрифт задан Georgia в WelcomeLabel1

Shift85, Врубился :rofl:
Код:
WelcomeLabel1.Font.Handle := IsPicReFont(WelcomeLabel1.Font.Height, 1000, False);
with WelcomeLabel1 do begin
//
end;
вот так робит. :)
Так жирность тепер не пашет код

Код:
WelcomeLabel1.Font.Handle := IsPicReFont(WelcomeLabel1.Font.Height, FW_BOLD, False);

with WelcomeLabel1 do begin
AutoSize:=False;
SetBounds(ScaleX(30), ScaleY(165), ScaleX(540), ScaleY(50));
WordWrap:=True;
//Alignment := taCenter;
//Transparent:=True;
Font.Name:='Georgia';
Font.Size:= 14;
Font.Color:=$FFFFFF;
//Font.Style:=[fsBold];
Caption:= ExpandConstant('{cm:WelcomeLabel1}');
Parent:=WizardForm;
end;

WelcomeLabel2.Font.Handle := IsPicReFont(WelcomeLabel2.Font.Height, FW_BOLD, False);

with WelcomeLabel2 do begin
AutoSize:=False;
SetBounds(ScaleX(30), ScaleY(240), ScaleX(540), ScaleY(100));
WordWrap:=True;
//Alignment := Center;
//Transparent:=True;
Font.Name:='Georgia';
Font.Size:= 10;
Font.Color:=$FFFFFF;
//Font.Style:=[fsBold];
Caption:= ExpandConstant('{cm:WelcomeLabel2}');
Parent:=WizardForm;
end;
 

Shift85

Старожил
Короче я так понял эти функции нужны только если видео вставлять с картинкой разницы невижу без них даже лутше их тогда можно выпилить...;)

Код:
const   // æèðíîñòü øðèôòà
  FW_DONTCARE   = 0;
  FW_THIN       = 100;
  FW_ULTRALIGHT = 200;
  FW_LIGHT      = 300;
  FW_NORMAL     = 400;
  FW_MEDIUM     = 500;
  FW_DEMIBOLD   = 600;
  FW_BOLD       = 700;
  FW_ULTRABOLD  = 800;
  FW_BLACK      = 900;

function IsPicReFont(height, Weight : Integer; Italic : Boolean) : HWND;
   external 'IsPicReFont@files:IsPicture2.dll stdcall delayload';
  // ïîäìåíà øðèôòà äëÿ áîðüáû ñ àðòåôàêòàìè ñãëàæèâàíèÿ
  // height - Font.Height
  // Weight - æèðíîñòü
  // Italic - íàêëîííîñòü
 

LexBell

Борода
Супер модератор
Shift85, мой косяк, починил, сейчас перезалью.
заодно добил давно заложеную но не доделанную нормально проверку того, что видеоустройство нормально построено и работает.

Перезалил
На строчку в файлах
Source: splash.png; Flags: dontcopy
не обращаем внимания, просто удаоляем - это в планах удобная заставка, поскольку считаю ее актуальной для инсталлятора с видео - будет разделенные процедуры запуска и закрытия заставки, что-бы между ними можно было спокойно распаковать видяшку не создавая эффекта подвисания инсталла.

Добавлено через 17 минут
с картинкой разницы невижу
библитека работает по принципу цветовой маски. если в системе отключено сглаживание Cleartype, то разницы не будет, а вот с ним - получаются грязные края букв, смотрится очень неопрятно, для устранения и была создана эта функция. Просто на статичной картинке это не бросается в глаза, но если приглядется, то грязь эту видно.
P.S. Обращаем внимание! IsPicReFont изменилась, добавилось обращение к дескриптору исходного шрифта, смотрим внимательно в примере. если оставить в скрипте по старому, то инсталл просто будет закрываться или крашиться с ошибкой.
 

urban

Старожил
довольно не плохая библиотека,если пошаманить то можно сделать ни чем не хуже чем ботва,только не пойму почему
wizardform.beveledlabel.hide;
не скрывает лейблы,сейчас попробую не много по другом
 
Последнее редактирование:

Shift85

Старожил
wizardform.beveledlabel.hide;
не скрывает лейблы,сейчас попробую не много по другом
Так пробуй

procedure CurPageChanged(CurPageID: Integer);
begin
Case CurPageID of
wpWelcome:
begin
WizardForm.WelcomeLabel1.Hide;
end;
end;
end;

у меня работает

Кстати позиция по центру так Center;

LexBell, Класс :up: час все отлично 2c0291b68e.jpg
 

sergey3695

Ветеран
Модератор
LexBell, а отдельно можно библиотеку для работы со шрифтами (Cleartype)?
 

LexBell

Борода
Супер модератор
urban, bevel и beveledlabel - это не одно и тоже. даже предки у них разные. даже базовые типы разные - beveledlabel - это WinControl, а bevel - GraphicControl. ну и само собой, скрывая beveledlabel, ты скрываешь только его - надпись копирайта. если я правильно понял, и скрыть тебе нужно линию, а не надпись, то скрывать нужно bevel

а отдельно можно библиотеку для работы со шрифтами (Cleartype)?
я не работаю со сглаживанием. примитивный пример где-то был выложен, сейчас уже не помню, суть в том, что просто с помощью функции CreateFont создается свой шрифт, и параметр fdwQuality задается любой, кроме CLEARTYPE_QUALITY. я задаю ANTIALIASED_QUALITY, это и достаточно сглажено и еще нет артефактов и полученыей дескриптор задается нужному шрифту. кстати там есть довольно интересный параметр - nOrientation, с ним прикольно поиграться, думаю, стоит его добавить. правда, на лейблах скорей всего работать не будет, но длл-ка и делалась изначально для того, чтоб сохранить максимальную дефолтность инсталлятора.
 
Последнее редактирование:

LexBell

Борода
Супер модератор
sergey3695, Вот, пример, с приколом:
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Code]
type
  HFONT = LongWord;

function CreateFont(nHeight, nWidth, nEscapement, nOrientaion, fnWeight: Integer;
  fdwItalic, fdwUnderline, fdwStrikeOut, fdwCharSet, fdwOutputPrecision,
  fdwClipPrecision, fdwQuality, fdwPitchAndFamily: DWORD; lpszFace: PAnsiChar): HFONT;  external 'CreateFontA@gdi32.dll stdcall delayload';

var
  i: Integer;

procedure NewFont(Font : TFont; nOr : Integer);
begin
  Font.Handle := CreateFont(Font.Height, 0, nOr, nOr, 400, 0, 0, 0,0, 0, 0,0, 0, Font.Name);
end;

procedure TMRTimer(Sender: TObject);
begin
  if i = 0 then i := 360;
  NewFont(WizardForm.WelcomeLabel2.Font, i*10);
  i := i-10;
end;

procedure InitializeWizard();
begin
  i := 360;
  NewFont(WizardForm.WelcomeLabel2.Font, i);
  with  TTimer.Create(WizardForm) do
  begin
    Interval := 40;
    OnTimer := @TMRTimer;
  end;
end;
 

sergey3695

Ветеран
Модератор
LexBell, хм...прикольно. надо бы себе наклонный текст немного сделать :rofl:
 

LexBell

Борода
Супер модератор
sergey3695, nEscapement и nOrientaion делаешь одинаковыми, шаг - 1/10 градуса против часовой стрелки.
 

sergey3695

Ветеран
Модератор
LexBell, я уже понял. Если что еще раз про createfont прочту.
Код:
  WizardForm.WelcomeLabel2.Caption:= #13#10'Вас приветствует Мастер установки наклонного текста';
  NewFont(WizardForm.WelcomeLabel2.Font, 20);
Как я понял только так? (с переносом вначале)
 

LexBell

Борода
Супер модератор
sergey3695, не знаю :) без переноса строки нету? попробуй автосайз поставить и опустить пониже
 

Shift85

Старожил
Подскажите пожалуйста как мне на форму деинсталлятора прикрутить ISPicture2

Кстати заметил небольшую фишку при BorderStyle:=bsNone;

бевелы и надписи быстрее прорисовываются при запуске инсталла...
 
Последнее редактирование:

Shift85

Старожил
Возмо жно ли без библиотеки устранить артефакты сглаживания шрифта...
Зарание спасибо...
 

Shift85

Старожил
С чем связана данная ошибка: http://rghost.ru/52241307

#include "Iss\IsPicture2.iss"

Код:
procedure Image();
begin
with WizardForm do
begin
ClientWidth:=ScaleX(600);
ClientHeight:=ScaleY(420);
Center;
OuterNotebook.Hide;
InnerNotebook.Hide;
Bevel.Hide;
end;
end;

procedure IsPicture2;
begin
ExtractTemporaryFile('Fon.bmp');


Font.Handle := IsPicReFont(Font.Handle, Font.Height, FW_DEMIBOLD, False);
WelcomeLabel1.Font.Handle := IsPicReFont(WelcomeLabel1.Font.Handle, WelcomeLabel1.Font.Height, FW_BOLD, False);
PageNameLabel.Font.Handle := IsPicReFont(PageNameLabel.Font.Handle, PageNameLabel.Font.Height, FW_BOLD, False);
FinishedHeadingLabel.Font.Handle := IsPicReFont(FinishedHeadingLabel.Font.Handle, FinishedHeadingLabel.Font.Height, FW_BOLD, False);


Color := $000008;


IsPicInit(Handle);


IsPicAddImg(ExpandConstant('{tmp}\Fon.bmp'));
end;
end;

procedure InitializeWizard();
begin
Image();
IsPicture2;
end;[/SPOILER]
 
Сверху