Форум: "Основная";
Текущий архив: 2002.03.14;
Скачать: [xml.tar.bz2];
ВнизПроблемы с метафайлом Win95/98/2000 Найти похожие ветки
← →
Анонимщик (2002-02-22 14:59) [0]Мне нужно сформировать на листе картинку - 9 прямоугольников 3 на 3, и в каждый прямоугольник поместить свою картинку. Вот код (картинки в прямоугольники я здесь не помещаю, но дело не в этом). Этот код (уже откомпилированный, естественно) корректно работает под Win 95 и Win 98, а под 2000-ым прямоугольники рамползаются, наползают друг на друга и имеют разные размеры (это можно увидеть, посмотрев в клипборд после завершения работы процедуры). Не знаю, с чем это может быть связано, с самой виндой или драйверами видеокарты, но хотелосьбы, чтобы вне зависимости от них все работало как нужно. Что бы для этого сделать, никто не поможет?
procedure TForm1.Button1Click(Sender: TObject);
var
pMetafile: TMetafile;
coeff : Real;
i, j : Integer;
pMCanvas : TMetafileCanvas;
rect : TRect;
begin
pMetafile := TMetafile.Create;
pMetafile.MMWidth := 21000;
pMetafile.MMHeight := 29700;
pMetafile.Inch := 1440;
coeff := pMetafile.Width / pMetafile.MMWidth;
for i := 0 to 2 do
for j := 0 to 2 do
begin
pMCanvas := TMetafileCanvas.Create(pMetafile, 0);
pMCanvas.Draw(0, 0, pMetafile);
pMCanvas.Pen.Color := clBlack;
pMCanvas.Pen.Width := 3;
pMCanvas.Brush.Color := clWhite;
pMCanvas.Brush.Style := bsSolid;
rect.Left := Round(coeff * (10 + i * 600));
rect.Top := Round(coeff * (20 + j * 500));
rect.Right := Round(rect.Left + coeff * 400);
rect.Bottom := Round(rect.Top + coeff * 300);
pMCanvas.Rectangle(rect);
pMCanvas.Free();
Clipboard.Assign(pMetafile);
end;
Clipboard.Assign(pMetafile);
pMetafile.Free();
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.03.14;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.004 c