DOBON.NETプログラミング道掲示板

■35233 / 親記事)  アプリでHDMIへ出す解像度を変えたい
  
□投稿者/ ま〜 一般人(20回)-(2022/11/15(Tue) 18:39:07)
  • アイコン環境/言語:[Windows10 Basic VS2022] 
    分類:[.NET] 

    こんばんわ
    解像度320,160のLEDモニタがあるのですがここに表示する為に作成した文字や画像が実際にどんな感じに表示されるか見たいが目標です。

    特定フォームを開いた時にPCから出力される解像度を一時的に640,480位まで下げ、そのフォームを閉じたときに元の解像度(1920,1080)に戻したいのですがこんな事が出来るのか?不明ですが宜しくお願いします。

マルチポストを報告
違反を報告
引用返信 削除キー/
■35235 / ResNo.1)  Re[1]: アプリでHDMIへ出す解像度を変えたい
□投稿者/ 魔界の仮面弁士 大御所(1481回)-(2022/11/15(Tue) 19:21:43)
  • アイコンNo35233に返信(ま〜さんの記事)
    > 解像度を一時的に640,480位まで下げ、そのフォームを閉じたときに
    > 元の解像度(1920,1080)に戻したいのですが

    その LED モニタの仕様が良くわからないので、外しているかもしれませんが…。


    画面キャプチャーを撮って、それを 640x480 に縮小して表示したい、
    という話で良いでしょうか。それとも、Windows の画面解像度を
    一時的に変更したいという話でしょうか。

    前者であれば、
    https://dobon.net/vb/dotnet/graphics/screencapture.html
    https://dobon.net/vb/dotnet/graphics/invokepaint.html
    などで画面を撮影し、
    https://dobon.net/vb/dotnet/graphics/drawimage.html#scaling
    https://dobon.net/vb/dotnet/graphics/interpolationmode.html
    で縮小するという方法が使えます。


    後者であれば、Windows 7 などといった古い OS であれば、
    exe ファイルのショートカットを作成し、プロパティの[互換性]タブにて
     設定:640 x 480 の解像度で実行する
    にチェックを入れて起動すれば良いと思います。

    ただし、この互換性機能は現行 OS では使えません。
    Windows 10 の最小システム要件が『800 x 600』となっているため
    「640x480」に設定することができないためです。同様に、Windows 11 は
    720p ディスプレイすなわち「1280x720」以上がシステム要件です。
違反を報告
引用返信 削除キー/
■35237 / ResNo.2)  Re[2]: アプリでHDMIへ出す解像度を変えたい
□投稿者/ ま〜 一般人(21回)-(2022/11/16(Wed) 15:17:35)
  • アイコンいつもありがとうございます

    320:160サイズのRichTextBoxに書いてる文字が小さすぎて見にくいのでFontDATAをいじらないで文字を拡大表示させたい
    そこで解像度の切替かMouseホールでRichTextBoxの内容を拡大表示みたいな事が出来ないかとの発想です。
    ホイールの方は倍率の設定が難しそうなので解像度の変更と考えた次第です
    確認用なので実際にLEDモニタは接続せず今使っているモニタ出力信号をハード的に解像度(HDMIに出す解像度)を変更したいです。

    でもアドバイスにありました画像でやれば簡単そうに思えたのでやって見ました所
    https://dobon.net/vb/dotnet/graphics/drawimage.html#scaling
    の bmp.Save("C:\test\1.BMp")でコピペなので入力間違いはないと思いますがSaveで例外エラーとなります。

    以下はエラーの内容です。宜しくお願いします。

    System.Runtime.InteropServices.ExternalException
    HResult=0x80004005
    Message=GDI+ で汎用エラーが発生しました。
    Source=System.Drawing
    スタック トレース:
    場所 System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
    場所 System.Drawing.Image.Save(String filename, ImageFormat format)
    場所 System.Drawing.Image.Save(String filename)
    場所 勉強.文字編集Form.Button6_Click(Object sender, EventArgs e) (C:\Users\maeda\source\repos\勉強\文字編集Form.vb):行 818
    場所 System.Windows.Forms.Control.OnClick(EventArgs e)
    場所 System.Windows.Forms.Button.OnClick(EventArgs e)
    場所 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    場所 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    場所 System.Windows.Forms.Control.WndProc(Message& m)
    場所 System.Windows.Forms.ButtonBase.WndProc(Message& m)
    場所 System.Windows.Forms.Button.WndProc(Message& m)
    場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    場所 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    場所 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    場所 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    場所 勉強.My.MyApplication.Main(String[] Args) ():行 23



違反を報告
引用返信 削除キー/
■35238 / ResNo.3)  Re[3]: アプリでHDMIへ出す解像度を変えたい
□投稿者/ 魔界の仮面弁士 大御所(1482回)-(2022/11/16(Wed) 17:03:43)
  • アイコンNo35237に返信(ま〜さんの記事)
    > でもアドバイスにありました画像でやれば簡単そうに思えたのでやって見ました所
    > https://dobon.net/vb/dotnet/graphics/drawimage.html#scaling
    > の bmp.Save("C:\test\1.BMp")でコピペなので入力間違いはないと思いますがSaveで例外エラーとなります。

    その URL には、コピペしたという「bmp.Save」という文字列は見当たらないのですが…?

    ・C:\test\ フォルダーが存在し、書き込み可能になっていますか?
    ・C:\test\ の下に、"1.BMp" というファイルやフォルダーが無い状態になっていますか?
    ・もしも C:\test\1.BMp が既に存在する場合、そのファイルが Image.FromFile 等で開かれた状態になっていませんか?
違反を報告
引用返信 削除キー/
■35239 / ResNo.4)  Re[4]: アプリでHDMIへ出す解像度を変えたい
□投稿者/ ま〜 一般人(22回)-(2022/11/16(Wed) 18:20:19)
  • アイコンありがとうございます。
    スクショの保存できました

    URLはhttps://dobon.net/vb/dotnet/graphics/invokepaint.html
    が正解です。
    Saveの方はフィルダが無かったです。気にも留めなかったです。
    申し訳ないです。以後気を付けます。

    問題はスクショなので全画面でした。当たり前ですが。。。
    なのでRichTextBoxを選択してPictureBoxへ転送して画像化。
    記事を参考にトライしてみます

    解像度の切替が難しそうなので画像にして拡大表示にしてみます。
    取りあえず目的が変わってしまったのでクロースします。
    ありがとうございました。


解決み!
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -