C# で記述された地理的ソフトウェアでは、一時ディレクトリにファイルPictureBoxとして保存されている GIS マップを表示するために a が使用されます。pngマップ上に描画する必要がある幾何学的形状がいくつかあります。メソッドを使用System.Drawingしてこのアクションを実行しました。
これらの図形のいくつかのプロパティを変更したり削除したりする必要がある場合があります。その下を黒くせずに図形を削除する必要があります。同じ理由でColor.Transparent、を使用しても機能しません。Graphics#Clear(Color.Transparent)
図形を描画する目的でのみ使用される透明な背景を持つ別の画像ボックスを使用してみました。マップコンテナを使用するときはGraphics#Clear(Color.Transparent)そのままです。PictureBox最初は完璧なアイデアのように聞こえましたが、マップ コンテナーが非表示になり、マップ ビューアー パネルが完全に黒くなる方法と理由がわからないため、このアイデアも失敗しました。
MapViewerForm
|-- Toolbar
|-- StatusBar
|-- MapViewer Panel (Provides scrollbars)
|-- MapContainer Pictutebox
|-- Shapes drawing canvas PictureBbox (The same size and location as map container, only difference is z-order)
私は2つのesを使用して「レイヤー」のアイデアを作成することを好みますPictureBox.他のアイデアよりも専門的ではないと思います(私は実際にはJava開発者であり、これはC#プロジェクトです!) JLayeredPane.これらの 2 つの画像ボックスの z オーダーを調整し、黒い画面のバグを省略します。ただし、マップ コンテナー自体に図形を描画し、その背後にあるマップの一部を失うことなくそれらをクリアする解決策がある場合は、その回答もいただければ幸いです。
PS: ファイルからマップ画像をロードしてプライベート フィールドに保存し、Bitmap図面Imageをクリアする必要がある場合は、picMapArea.Image = MapViewer.getInstance().getMapImage();(注:MapViewerシングルトン クラスです) のようなコードを使用してそのフィールドから画像をロードすると、ペイントされた形状は消えます。しかし、パフォーマンスが低く、遅れているため、明らかに「良いアイデア」のようなものではありません。
前もって感謝します。