VC++でCStatic型のピクチャーコントロール(例:m_StaticFlame)に線画の描画を行っています。(描画領域=表示領域)
ピクチャーコントロールの表示領域には限度があるため、ワープロやCADと同じように描画領域を大きく取って一部分だけを表示し、スクロールバーで表示領域を移動させたいと考えております。
良い方法をご存じの方いらっしゃいましたら教えて頂けないでしょうか。
今の所、Class WizardでCScrollViewのクラス(CScrollViewTest)を作成し、m_StaticFlameに関連づけてスクロールバー付きの表示にしようと考えていますが、描画領域の定義からCScrollViewTestやm_StaticFlameとの関連付け、表示方法、さらにこの方法が正しいかどうかも分かりません。
No.1ベストアンサー
- 回答日時:
ピクチャーコントロールの変わりにCScrollViewですか?
ピクチャーコントロールと仰ってるという事は、ダイアログですよね?
(違う場合もありますけど・・・)
もしそうならば、この状態でCScrollViewを使うのは困難かと思います。
CScrollViewを使いたいのは、表示領域をスクロールバーによって変えたいだけですよね?であれば、普通にCWndから派生させて、作るウィンドウにWS_HSCROLLやWS_VSCROLLスタイルをつけてあげればスクロールバーも出ますので、そちらをお勧めします。
でスクロールバーがついた状態で・・・
まず、flowergooさんはGDIによって線などを描画することは、できるのですよね?であれば、あとはスクロールバーの位置によって描画する座標を変更してあげればよいだけです。
例えば
pDC->MoveTo (0, 0);
pDC->LineTo (100, 100);
のように単純な線の場合で横方向にスクロールさせたいのであれば
pDC->MoveTo (x, 0);
pDC->LineTo (x + 100, 100);
として xの値をスクロールバーから取得すればよいわけです。
まーこんなことをしてると管理も大変ですが、基本はこんな感じになると思います。実際には、座標管理(座標変換)を行う関数やクラスを経由して描画する座標位置を求めることになると思いますが。
ご回答頂きありがとうございます。
回答者様のおっしゃる通り、作成しているプロジェクトはダイアログです。
CScrollViewはやはり基本的にMDIかSDIで使うのものなのですね。
コントロールにWS_HSCROLL等のスタイルをつけてみます。
GDI描画につきましては色々と経験しているので分かるのですが、スクロールの対応方法については良い参考となりました。
早速試して見ます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ブラウザ) bingチャットの内容(縦長)をスクリーンショットで保存する方法 3 2023/02/28 02:13
- ドライブ・ストレージ HDDの未割り当て領域が認識されない 7 2022/11/27 18:51
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- 物理学 示すように,真空中の直交座標系を考える。y平面に平行な つ領域Iと領域Iがあり,軸上の領域Iと領域I 1 2023/06/25 14:46
- その他(プログラミング・Web制作) Leafletで画像をon、offさせる方法について 2 2022/11/01 15:34
- Windows 10 【PC】デュアルディスプレイ利用時に2画面分で最大化できる? 3 2023/03/22 01:45
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- iCloud iPhoneのiCloudバックアップができません。 iPhone12を先日落としてしまい、画面の一 4 2023/05/03 20:16
- HTML・CSS 要素の幅をいろんな写真の幅に合わせたい。 1 2022/07/25 20:11
- iPhone(アイフォーン) アイフォンで、クロムブラウザでユーチューブを見てピクチャーインピクチャーの表示、小さい小窓で見る場合 3 2023/02/26 22:59
このQ&Aを見た人はこんなQ&Aも見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
MFCでのスクロールバーの扱い
C言語・C++・C#
-
ラジオボタンの値の取得について(C++)
C言語・C++・C#
-
-
4
VC++2010 MFC サイズの最大化について
C言語・C++・C#
-
5
適切な変換関数が存在しない???
C言語・C++・C#
-
6
SetWindowOrgとSetViewportOrgの違い
C言語・C++・C#
-
7
MFCで水平スクロールバー
C言語・C++・C#
-
8
CStaticコントロールの静的イメージ描画
C言語・C++・C#
-
9
CEdit の内容が変わった時にメッセージを表示させたい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[VB.net] DataGridViewの列ヘッ...
-
PCで「使用可能な場合はグラフ...
-
VB6,リストボックスの特定行の...
-
多角形の描画。(VC++)
-
C++にて、塗りつぶされた円を描...
-
UpdateData( FALSE); による文...
-
word
-
WM_SIZEとWM_SIZINGの違い (Win...
-
ちらつきを何とかしたい
-
CScrollViewの使用方法について
-
タブコントロール上のピクチャ...
-
MFCのタイマーのつかい方を教え...
-
VBAにGDI+を参照させる方法
-
VB.netでのライン描画方法がわ...
-
MFCタブコントロールのグラデー...
-
NVIDIAのシェーダーキャッシュ
-
アプリケーションのデザイン
-
ビューにビットマップファイル...
-
c++ ダブルバッファリング、以...
-
ペーパーマリオみたいにドット...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6,リストボックスの特定行の...
-
[VB.net] DataGridViewの列ヘッ...
-
NVIDIAのシェーダーキャッシュ
-
MFCでOnPaintのタイミング
-
TextBoxに文字を書いても表示さ...
-
word
-
UpdateData( FALSE); による文...
-
VC++プログラムをつかったBMP画...
-
InvalidateRectの使い方について
-
StretchBlt関数について
-
OneNote 2010 文字と描画がずれる
-
C# ラバーバンドの描画を快適に...
-
エクセルでガンチャートを作成...
-
C++にて、塗りつぶされた円を描...
-
VBAにGDI+を参照させる方法
-
MFC DrawText 背景色とフォント
-
GDI+で高速な描画
-
MFCのタイマーのつかい方を教え...
-
Labelの文字をスクロールする際...
-
FlexGridの一部のみ表示を更新...
おすすめ情報