某掲示板で質問のあったので、Delphiで書かれた「マウス周辺をリアルタイムで拡大表示する処理」をC++Builderで書き直してみました。
- ソースコードのダウンロード
プロジェクトのファイル一式と、コンパイル済みのexeファイルを同封しています。
ソースコード
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);
}
こんばんは。Embacadero掲示板ではお世話になりましたfujiokaです。文字画像を拡大する処理を追加しようとしてコーディングを始めた時、以前にこちらで見たことを思い出して、コードをコピーしようかとダウンロードしたところ、どの箇所でも拡大表示できるアプリになっていたのですね。今チェックのために組み込もうと思っていましたが、そのまま使えました。その結果問題の箇所はリアルフォントになっていることがわかり、今後の処理方針に役立てることができました。無駄な工数をはぶけることになりありがとうございました。
また、コードでも参考になる箇所がありました。