▼ Mr.XRAYさん
> > 私だと GDI+ を使ってしまうかも知れません.
>
> 「Delphi 画像 90度回転」
> でググってみると GDI+ を使うまでもなさそうです.
> やはり問題は印刷開始前の用紙の向きの設定かな ?
> 常に 90 度回転が必要というわけではないので,
> TplPrev コンポに実装するか,Sara さんが独自で実装するかですね.
> う〜ん.
とりあえず、今回はこーんな感じにしてみました。
Bmpの回転処理をしなければ、通常印刷もこれを使えそうですが、
今回は、回転処理専用として書いています。
Bmp := TBitmap.Create;
try
・
・
w := plPrev1.ViewWidth; h := plPrev1.ViewHeight;
r := Rect(0,0,w,h);
Bmp.SetSize(h,w);//用紙向きが縦になっているので、横向きのサイズにする
for page1 := 0 to PageList.Count - 1 do begin //複数ページ分のループ
line1 := LineMax;
for ln := 0 to LineList.Count - 1 do begin //複数行印刷ループ
1行分のデータ取り出し;
if line1 = LineMax then begin //改ページ処理
if ln <> 1 then begin //初回でなければ、ページ印刷処理
RotateBitmap(Bmp);
plPrev1.Canvas.StretchDraw(r.Bmp);
Bmp.SetSize(h,w);
plPrev1.NewPage;
end;
line1 := 0;
ヘッダー印刷処理;//Bmpの初期かも実施
end;
Bmpに対する項目印刷処理[ln];
inc(line1);
end;
RotateBitmap(Bmp);//回転処理
plPrev1.Canvas.StretchDraw(r,Bmp);// 最後のページ印刷
end;
finally
Bmp.Free;
end;
|