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

Вниз

Как   Найти похожие ветки 

 
Людмила   (2002-02-12 17:56) [0]

Я рисую на канве метафайла картинки, которые заведемо полностью туда не влезают. Т.е. при рисовании некоторые части рисунка имеют отрицательные координаты. Но в отличие от Bitmap при выводе этого метафайла на принтер или экран отображается все нарисованное, даже то, что в канву не должно было влезть. Как мне "обрезать" ненужные части?


 
Лёша   (2002-02-13 06:10) [1]

Не надо обрезать. Возьмите другую программу просмотра и печати метафайла. Большенство из них выводят метафайл в (0,0).
Если же метафайлы надо сохранять и "обрезанные" части не нужны, тогда лучше сразу, ещё при рисовании на метафайле битмапов, отсекать лишнее.
With TMetafileCanvas.Create(MyMetafile,0) do
begin
//Dest-на канве, Source-на битмапе
if Dest.Left<0 then
begin
Source.Left:= Source.Left-Dest.Left;
Dest.Left:=0;
end;
if Dest.Top<0 then
begin
Source.Top:= Source.Top-Dest.Top;
Dest.Top:=0;
end;
CopyRect(Dest, BMP.Canvas, Source);
Free;
end;


 
Людмила   (2002-02-13 13:10) [2]

Спасибо за участие, но в том-то и проблема, что мне BMP использовать вообще нельзя, он слишком много ресурсов жрет. Я рисую на канве метафайла, а потом этот метафайл печатаю или отображаю на форме в некоторой области (Draw или StretchDraw на канве принтера или формы). Вот тогда-то и вылезают все эти части, которые в метафайле были отрицательные и не должны были напечататься. Это никак не связано с DC, то биш Device Context?


 
troits   (2002-02-13 16:47) [3]

В SDK написано, что при PlayEnhancedMetaFile Clip Region надо указывать для DC самостоятельно.

Так что можно поробовать что-то вроде этого:

procedure TForm1.FormPaint(Sender: TObject);
var
wRgn: HRGN;
begin
wRgn := CreateRectRgn(0, 0, FMetaFile.Width, FMetaFile.Height);
SelectClipRgn(Canvas.Handle, wRgn);
Canvas.Draw(0, 0, FMetaFile);
SelectClipRgn(Canvas.Handle, 0);
DeleteObject(wRgn);
end;



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

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

Наверх





Память: 0.45 MB
Время: 0.007 c
1-77351
Karter
2002-06-12 16:19
2002.06.24
Как в Delphi через API


14-77565
den_c
2002-05-20 15:59
2002.06.24
Кто шмонает на тему лицензионого программного обеспечения


14-77609
arbiter
2002-05-20 22:18
2002.06.24
Свобода слова или нет?


7-77624
@andrew
2002-03-27 14:55
2002.06.24
ПРИВЕТ ВСЕМ !!! Вопрос по работе со звуком...


3-77292
Voldemar
2002-05-31 02:08
2002.06.24
DBLookupComboBox - активная запись при создании





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский