![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
MFCでのスクロールバーの扱い
C言語・C++・C#
-
ラジオボタンの値の取得について(C++)
C言語・C++・C#
-
VC++2010 MFC サイズの最大化について
C言語・C++・C#
-
-
4
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
5
画面を強制的に再描画させる方法
C言語・C++・C#
-
6
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
7
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
8
SetWindowOrgとSetViewportOrgの違い
C言語・C++・C#
-
9
CStaticコントロールの静的イメージ描画
C言語・C++・C#
-
10
ダイアログをスクロールさせるには
C言語・C++・C#
-
11
適切な変換関数が存在しない???
C言語・C++・C#
-
12
WORD型をCString型に変換する方法
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 2019 [オプション]の[リボンのユ...
-
pset関数について
-
VB6,リストボックスの特定行の...
-
[VB.net] DataGridViewの列ヘッ...
-
VB.netでのライン描画方法がわ...
-
UpdateData( FALSE); による文...
-
word
-
移動する線を描画したい(何と...
-
TextBoxに文字を書いても表示さ...
-
Minecraft 統合版(PC)の描画距...
-
InvalidateRectの使い方について
-
画面全体を再描画させたい
-
CStaticコントロールの静的イメ...
-
Spreadで表全体を選択した場合...
-
逐次的なグラフ表示の方法
-
OnDrawが呼び出されません
-
vb.netでテキストボックス内の...
-
OpenCV処理画像をpictureBoxへ。
-
MFC DrawText 背景色とフォント
-
アプリケーションのデザイン
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MFCでOnPaintのタイミング
-
[VB.net] DataGridViewの列ヘッ...
-
word
-
NVIDIAのシェーダーキャッシュ
-
TextBoxに文字を書いても表示さ...
-
UpdateData( FALSE); による文...
-
VB6,リストボックスの特定行の...
-
PCで「使用可能な場合はグラフ...
-
VC++プログラムをつかったBMP画...
-
VBAにGDI+を参照させる方法
-
FlexGridの一部のみ表示を更新...
-
pset関数について
-
エクセルでガンチャートを作成...
-
C言語(dxlib)のDrawboxについ...
-
Form1 Load で実行されない。
-
MFCのタイマーのつかい方を教え...
-
InvalidateRectの使い方について
-
CStaticコントロールの静的イメ...
-
Windowのちらつき防止
-
GDI+で高速な描画
おすすめ情報