クリップボードへのグラフィックの切り取り
クリップボードへのグラフィックの切り取りは,コピーとまったく同じ処理ですが,ソースからグラフィックが削除されるという点が異なります。
画像からクリップボードへグラフィックを切り取る場合は,最初にクリップボードへのコピーを行い,次に元のグラフィックを消去します。
ほとんどの場合,切り取りに関しては,消去された元のイメージをどのように表示するのかが唯一の問題になります。次のコードのように,その領域を白にするのが一般的な解決策です。次のコードは,メニュー項目[編集 > 切り取り]の OnClick イベントにイベントハンドラを結び付けます。
procedure TForm1.Cut1Click(Sender: TObject);
var
ARect: TRect;
begin
Copy1Click(Sender);{ クリップボードへ画像をコピー }
with Image.Canvas do
begin
CopyMode := cmWhiteness;{ すべてを白色にコピー }
ARect := Rect(0, 0, Image.Width, Image.Height);{ ビットマップの四角形を取得する }
CopyRect(ARect, Image.Canvas, ARect);{ ビットマップをそれ自体にコピーする }
CopyMode := cmSrcCopy;{ 通常のモードに戻る }
end;
end;
void __fastcall TForm1::Cut1Click(TObject *Sender)
{
TRect ARect;
Copy1Click(Sender); // クリップボードへ画像をコピー
Image->Canvas->CopyMode = cmWhiteness; // すべてを白色にコピー
ARect = Rect(0, 0, Image->Width, Image->Height); // 画像のサイズを取得
Image->Canvas->CopyRect(ARect, Image->Canvas, ARect); // ビットマップをそれ自体にコピー
Image->Canvas->CopyMode = cmSrcCopy; // デフォルトモードに戻る
}