Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.033 c
1-79840
Митяй2
2004-02-10 19:55
2004.02.25
Корявая загрузка XP-шных иконок.


1-79750
JaoDaoDzen
2004-02-14 12:31
2004.02.25
привязка расширения файла к своей программе


3-79616
Вованчик
2004-02-02 08:15
2004.02.25
IBUpdateSQL


14-80219
ARES
2004-02-05 17:23
2004.02.25
Excel


1-79966
plintus
2004-02-13 16:10
2004.02.25
Как из TWebBrowser вытащить HTML код страницы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский