Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.25;
Скачать: CL | DM;

Вниз

PaintBox + Printer   Найти похожие ветки 

 
Fast   (2003-12-19 16:48) [0]

Уважаемые мастера! Помогите нарисовать на PaintBox то, предварительно вывожу на Printer. Код плохой (какой есть)

procedure TForm1.Button1Click(Sender: TObject);
var W, H, H_Text, i : integer;
ss : string;
SrcDC, CompDC, B_Handle : HDC;
R : TRect;
begin
R := Rect(10,10,200,200);
ss := "AAAA DDDDDD";
W := GetDeviceCaps(Printer.Handle, HORZRES);
H := GetDeviceCaps(Printer.Handle, VERTRES);
CompDC := CreateCompatibleDC(Printer.Handle);
B_Handle := CreateCompatibleBitmap(Printer.Handle, W, H);
SelectObject(CompDC, B_Handle);
SrcDC := PaintBox1.Canvas.Handle;
DrawText(B_Handle, PChar(ss), -1, R, dt_WordBreak or dt_Left);
BitBlt(CompDC, 210, 210, 100, 100, SrcDC, 0, 0, SRCPAINT);
end;

На форме ничего на появилось. Спасибо.


 
Тимохов ©   (2003-12-19 17:02) [1]

Вроде как вчера про paintbox говорили
В нем надо рисовать в ивенте OnPaint, а не в кликах кнопки.
Читай примеры из хелпа.


 
Fast   (2003-12-19 17:54) [2]

Примеры вполне информативные и работают. Хотелось бы понять, как
на onPaint вывести образ принтера на PaintBox (с соответствующим искажением).


 
Тимохов ©   (2003-12-19 18:00) [3]

Ты опиши вообще, что хочешь сделать.
Я так понимаю, что ты хочешь сделать preview?
Если да, то ИМХО это лучше делать метафайлами.


 
Fast   (2003-12-19 18:28) [4]

Была попытка сделать preview чеерз метафайл :
Если не трудно, посмотри. Сейчас оно на onPaint не заходит. Код крайне сырой (извиняюсь), т.к. нет основной идеи.

procedure TForm1.FormCreate(Sender: TObject);
var W, H, H_Text, i : integer;
ss : string;
R : TRect;
begin
Printer := TPrinter.Create;
hp := Printer.Handle;
W := GetDeviceCaps(Printer.Handle, HORZRES);
H := GetDeviceCaps(Printer.Handle, VERTRES);
CompDC := CreateCompatibleDC(Printer.Handle);
B_Handle := CreateCompatibleBitmap(Printer.Handle, W, H);
SelectObject(CompDC, B_Handle);
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
var R : TRect;
ss : string;
MetaFile : TMetaFile;
H_Text, i : integer;
begin
with Self.Canvas, Form1 do begin
Color := clWhite;
R := Rect(0, 0, Self.Width, Self.Height);
Rectangle(R.Left-8, R.Top-8, R.Right+8, R.Bottom+8);
Font.Color := clBlue;
// создаем метафайл, используя дескриптор принтера в качестве устройства
MetaFile := TMetaFile.Create;
with TMetafileCanvas.Create(Metafile, hp) do
try
//выводим то, что предназначено для печати на канву этого метафайла,
//как на канву принтера
for i:=0 to 4{Memo1.Lines.Count - 1} do begin
ss:= PChar(Memo1.Lines.Strings[i]);
DrawText(B_Handle, PChar(ss), -1, R, dt_WordBreak or dt_Left);
H_Text := Trunc(1.5*TextHeight(ss));
R.Top := R.Top + H_Text;
end;
finally
Free;
end;
// выводим содержимое метафайла на экран
Form1.Canvas.Draw(0,0,Metafile);
end;
end;


 
Тимохов ©   (2003-12-19 18:36) [5]

Знаешь, смотреть, чессо говоря лень.
Могу дать полностью рабочий пример этого дела. Сейчас такая штука прекрасно работает во многих местах.
Если хочешь пришлю, почту давай.
Только без распросов.


 
Fast   (2003-12-19 18:42) [6]

Премного благодарен. Жду с нетерпением по V_FADEEV@list.ru


 
Тимохов ©   (2003-12-19 18:59) [7]

отправил


 
Ske4er ©   (2003-12-19 19:21) [8]


> Тимохов © или Fast


После таких слов идет примерно следующее: И мнеееееееееееееее...

ЗЫ Если не сложно и мне :) хотелось бы взглянуть. to ske4er@pisem.net


 
Тимохов ©   (2003-12-19 19:28) [9]

Отправил.



Страницы: 1 вся ветка

Текущий архив: 2004.02.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
1-79755
Санек
2004-02-12 09:57
2004.02.25
Свой значок при создании компонента


1-79774
som
2004-02-11 19:30
2004.02.25
Grid с под строками и под столбцами


11-79685
Dimaxx
2003-06-03 00:06
2004.02.25
Как использовать битмапы у пунктов в MainMenu?


1-79696
Grinder
2004-02-12 18:44
2004.02.25
кто скажет грамотный алгоритм


1-79902
Dr.Karter
2004-02-09 14:38
2004.02.25
Копирование папки