0

Event を持つ TForm がありFormResizeます。その関数内で、TImage 内に何かを描画したいと考えています。

私の FormResize 関数は以下のようになります

void __fastcall TForm1::FormResize(TObject *Sender)
{
    // Teken de blokjes
    _viewPort->draw(_viewPortImage->Canvas, _viewPortImage->Width, _viewPortImage->Height);
}

この関数内では、境界線を描画する四角形を描画するだけです。

ViewPort::draw(Vcl::Graphics::TCanvas* Canvas, int width, int height)
{
    Canvas->Rectangle(0, 0, width, height);
}

今問題。フォームを元のフォームよりも小さくすると、うまくスケーリングされます。ただし、フォームが元のサイズよりも大きくなった場合。背景+ボーダーがうまく描かれていません。以下のスクリーンショットを参照してください。白い背景/キャンバスは TImage からのものです。TImage は 4 方向すべてにアンカーされています。

画像のサイズを大きくできるようにする方法を知っている人はいますか?

スクリーンショット オリジナル 小さい 大きい

4

1 に答える 1

0

a のTPaintBox代わりに aを使用し、イベントTImageで描画を行います。その後、イベントTPaintBox::OnPaintをもう使用する必要はありません。TForm::OnResize

void __fastcall TForm1::ViewPortPaintBoxPaint(TObject *Sender)
{
    // Teken de blokjes
    _viewPort->draw(ViewPortPaintBox->Canvas, ViewPortPaintBox->ClientWidth, ViewPortPaintBox->ClientHeight);
}
于 2013-02-11T23:20:04.537 に答える