C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: .Net内部イメージの利用方法


(過去ログ 149 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■86758 / inTopicNo.1)  .Net内部イメージの利用方法
  
□投稿者/ mayoppes (1回)-(2018/03/12(Mon) 11:41:19)

分類:[VB.NET/VB2005 以降] 

2018/03/12(Mon) 11:43:22 編集(投稿者)

VB2010でWindowsFormアプリを作っています。
以下の事が解らないので、教えてください。

(1)PrintPreviewControlを使って、自作の印刷プレビューFormを作成しました。
このForm内に配置したToolStripメニューにPrintPreviewDialogのToolStripボタン
のイメージを利用したいのですが、指定方法が解りません。
「ズーム」「1ページ」「2ページ」といったボタンのイメージの事です。

自分で作成したものや、外部イメージであればプロジェクトにリソースとして取り込んで
ToolStripSplitButton.Image = My.Resources.何某
としておりますが、今回のような場合は、どう記載すればよいか解りません。
御教示、お願いします。

(2)又、同じような事だと思うのですが、ToolStripの右クリックから「標準項目の挿入」を
実行すると、I/Oや編集関連のアイコンが追加されます。
これを.Netが自動で作成するデザイナのコードを確認すると以下のようになっています。
Me.印刷PToolStripButton1.Image = CType(resources.GetObject("印刷PToolStripButton1.Image"), System.Drawing.Image)

このGetObjectの引数「"印刷PToolStripButton1.Image"」は他に「どのようなものが利用できるか」、
「どこを検索すればわかるのか」、といった事が知りたいです。
御教示、お願い致します。
引用返信 編集キー/
■86760 / inTopicNo.2)  Re[1]: .Net内部イメージの利用方法
□投稿者/ 魔界の仮面弁士 (1585回)-(2018/03/12(Mon) 12:31:22)
2018/03/12(Mon) 16:58:56 編集(投稿者)

No86758 (mayoppes さん) に返信
> このForm内に配置したToolStripメニューにPrintPreviewDialogのToolStripボタン
> のイメージを利用したいのですが、指定方法が解りません。

ToolStrip を、丸ごと

 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  Me.Controls.Remove(Me.ToolStrip1)
  Me.ToolStrip1.Dispose()
  Me.ToolStrip1 = Me.PrintPreviewDialog1.Controls.OfType(Of ToolStrip).FirstOrDefault()
  Me.Controls.Add(Me.ToolStrip1)
 End Sub

のように付け替える……というのは強引すぎるので無しとして。
たとえばこんな感じでどうでしょう。

 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  Dim bmp As New Bitmap(GetType(PrintPreviewDialog), "PrintPreviewStrip.bmp")
  bmp.MakeTransparent()
  Me.ImageList1.Images.AddStrip(bmp)
  Me.ToolStrip1.ImageList = Me.ImageList1
  Me.ToolStrip1.Items(0).Text = "印刷"
  Me.ToolStrip1.Items(0).ImageIndex = 0
  Me.ToolStrip1.Items(1).Text = "ズーム"
  Me.ToolStrip1.Items(1).ImageIndex = 1
  Me.ToolStrip1.Items(2).Text = "1 ページ"
  Me.ToolStrip1.Items(2).ImageIndex = 2
  Me.ToolStrip1.Items(3).Text = "2 ページ"
  Me.ToolStrip1.Items(3).ImageIndex = 3
  Me.ToolStrip1.Items(4).Text = "3 ページ"
  Me.ToolStrip1.Items(4).ImageIndex = 4
  Me.ToolStrip1.Items(5).Text = "4 ページ"
  Me.ToolStrip1.Items(5).ImageIndex = 5
  Me.ToolStrip1.Items(6).Text = "6 ページ"
  Me.ToolStrip1.Items(6).ImageIndex = 6
 End Sub



> (2)又、同じような事だと思うのですが、ToolStripの右クリックから「標準項目の挿入」を
> 実行すると、I/Oや編集関連のアイコンが追加されます。
> これを.Netが自動で作成するデザイナのコードを確認すると以下のようになっています。
> Me.印刷PToolStripButton1.Image = CType(resources.GetObject("印刷PToolStripButton1.Image"), System.Drawing.Image)
> このGetObjectの引数「"印刷PToolStripButton1.Image"」は他に「どのようなものが利用できるか」、
> 「どこを検索すればわかるのか」、といった事が知りたいです。

ソリューション エクスプローラーで、[すべてのファイルを表示]を選択し、
Form1.vb の子階層に表示される Form1.resx を見れば分かります。


> ToolStripSplitButton.Image = My.Resources.何某

この場合は、プロジェクト全体に対する埋め込みリソースの参照を意味しますね。

一方、フォーム単位の埋め込みリソースでは
 Dim resources As New System.ComponentModel.ComponentResourceManager(GetType(Form1))
 Me.印刷PToolStripButton1.Image = CType(resources.GetObject("印刷PToolStripButton1.Image"), System.Drawing.Image)
のように指定されます。
複数のフォームで同じ画像を使いまわす場合は、My.Resources の方が効率的ですね。

また、Professional Edition 以上の Visual Studio では、
埋め込みに使える画像集が、Visual Studio のインストール先の
 VS2010 → Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\1041\VS2010ImageLibrary.zip
 VS2008 → Microsoft Visual Studio 9.0\Common7\VS2008ImageLibrary\1041\VS2008ImageLibrary.zip
 VS2005 → Microsoft Visual Studio 8\Common7\VS2005ImageLibrary\VS2005ImageLibrary.zip
 VS.NET2003 → Microsoft Visual Studio .NET 2003\Common7\Graphics
に用意されています。
ただし VS2012 以降では同梱されなくなっており、Download Center からの入手が必要となります。
https://www.microsoft.com/en-us/download/details.aspx?id=35825
引用返信 編集キー/
■86762 / inTopicNo.3)  Re[2]: .Net内部イメージの利用方法
□投稿者/ mayoppes (2回)-(2018/03/12(Mon) 13:56:41)
No86760 (魔界の仮面弁士 さん) に返信
非常に丁寧な説明、ありがとうございます。

第2案の個別に追加する方法で実装させて頂きます。
第1案の丸ごと入替の方法も参考になりました。
今後、他の案件で使えるかもしれません。

Form単位とProject単位でのイメージの扱い方の違いも理解しました。
確かにForm1.resxにForm単位のイメージが存在するのを確認しました。

本当に、ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -