マウス周辺をリアルタイムで拡大表示する処理

某掲示板で質問のあったので、Delphiで書かれた「マウス周辺をリアルタイムで拡大表示する処理」をC++Builderで書き直してみました。

ソースコード

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  //画像を削除
  Image1->Picture = NULL;

  //マウスカーソルの現在座標を取得する
  TPoint Poi;
  GetCursorPos(&Poi);

  //マウス入力を受け持っているウインドウのハンドルを取得
  HWND hWnd = GetCapture();

  //デバイスコンテキストのハンドルを取得する
  HDC DC = GetWindowDC(hWnd);

  //マウスカーソルの位置の画像をImage2に転送する(転送する幅は各自で変更してください)
  BitBlt(Image2->Canvas->Handle, 0, 0, Width, Height, DC, Poi.x - 55, Poi.y - 45, SRCCOPY);

  //Image2の画像を拡大してImage1に転送する
  StretchBlt(Image1->Canvas->Handle, 0, 0, Image1->Width, Image1->Height, Image2->Canvas->Handle, 0, 0, Image2->Width, Image2->Height, SRCCOPY);

  //画像を削除
  Image2->Picture = NULL;

  //デバイス コンテキストを解放する(これをしないとどんどん蓄積される)
  ReleaseDC(Form1->Handle, DC);
}

コメント

  1. こんばんは。Embacadero掲示板ではお世話になりましたfujiokaです。文字画像を拡大する処理を追加しようとしてコーディングを始めた時、以前にこちらで見たことを思い出して、コードをコピーしようかとダウンロードしたところ、どの箇所でも拡大表示できるアプリになっていたのですね。今チェックのために組み込もうと思っていましたが、そのまま使えました。その結果問題の箇所はリアルフォントになっていることがわかり、今後の処理方針に役立てることができました。無駄な工数をはぶけることになりありがとうございました。
    また、コードでも参考になる箇所がありました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください