imagelistコントロールに大き目の画像

タグの編集
投稿者 ひでと  (社会人) 投稿日時 2010/9/15 11:31:16
おせわになります。vb2005です。
imagelistコントロールに画像を入れて使用していますが、256x256のサイズでは使い勝手が悪く、
もう少し大きな画像を使用したいのです。
画像ファイルを複数添付するのでは無く、良い方法はありませんでしょうか?
投稿者 ぺぺたろう(旧トマト)  (中学生) 投稿日時 2010/9/15 16:12:49
List(Of Image)に放り込んでいくというのはどうですか?
投稿者 ひでと  (社会人) 投稿日時 2010/9/16 09:06:54
ありがとうございます。
List(Of Image)でインデックスを処理することはできるのですが、この方法だと画像ファイルを別に添付し、それを読み込む処理が必要だと思います。
Imagelistコントロールではデザイン時にイメージを読み込み保持する機能があり、画像ファイルを添付する必要はありません。コントロールのソース自体になんらかのイメージを保持する機能があり、コンパイル時にイメージを描画しているのではないかと思います。
このように、画像ファイルを別に添付する必要が無いのが、魅力なのです。

同じことをやろうとすれば
1.仮に使用するフォームを用意し、に複数のPictreBoxを貼り付けておく。
2.各PictureBoxにデザイン時にイメージを登録。
3.Formのロードイベント時に、Listに各PictureBOxのイメージを追加する。

のようにやれば目的の処理ができるのではないかと思いますが、あまりスマートな方法では無いかと思い、ご相談させていただきます。よろしくお願いします。
投稿者 ぺぺたろう  (中学生) 投稿日時 2010/9/16 13:46:30
>List(Of Image)でインデックスを処理することはできるのですが、この方法だと画像ファイルを別に添付し、それを読み込む処理が必要だと思います。
プロジェクトのプロパティで画像をリソースに入れることができるので、コード上からListにリソースを追加してやってください
list.Add(My.Resource.test)


投稿者 ひでと  (社会人) 投稿日時 2010/9/16 16:05:22
ありがとうございました。
リソース・・・使ったことなかったです。おおっ 感動。
画像ファイルをプロジェクトに追加して、プロジェクトのプロパティでリソースを開き、
文字列がデフォルトだったのでイメージに変更。
追加した画像ファイルをドラッグドロップすればいいのですね。
うまくできそうです。ありがとうございました。
投稿者 やじゅ  (社会人) 投稿日時 2010/9/16 20:40:25
ホントにできるんですか?
画像ファイルを配列に入れて使うんですよ。(笑)
投稿者 ひでと  (社会人) 投稿日時 2010/9/17 09:15:35
やじゅ様 できましたよ。
formにリスト型の変数作って、form_loadイベントにaddで読み込んでます。
後は今までやっていた、imagelistコントロールの処理をちょっと変更しただけでうまくできました。
ご心配ありがとうございます。
投稿者 やじゅ  (社会人) 投稿日時 2010/9/17 20:24:57
ADD?(ワロス)
そんなコードは必要ないですよ。
ちゃんとリソースの追加で入れましたか?
ちょっとコードを書いてごらんよ。
投稿者 ひでと  (社会人) 投稿日時 2010/9/21 09:20:10
ちょっと書いてみろという事なので抜粋
Public Class 本体
    Public il非対称 As New List(Of Image)
    Public il対称 As New List(Of Image)
省略

 Private Sub 本体_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        il非対称.Clear()
        il非対称.Add(My.Resources._1)
        il非対称.Add(My.Resources._2)
        il非対称.Add(My.Resources._3)
        il非対称.Add(My.Resources._4)
        il対称.Clear()
        il対称.Add(My.Resources._5)
        il対称.Add(My.Resources._6)
        il対称.Add(My.Resources._7)
        il対称.Add(My.Resources._8)
省略

    Private Sub b図形回転_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles b図形回転.Click
        Static index As Integer
        index = index + 1
        If Me.cb対称型.Enabled = True Then
            If Me.cb対称型.Checked = False Then
                If index > Me.il非対称.Count - 1 Then index = 0
                Me.pb図形.Image = Me.il非対称(index)
            Else
                If index > Me.il対称.Count - 1 Then index = 0
                Me.pb図形.Image = Me.il対称(index)
            End If
        Else
            If index > Me.il非対称.Count - 1 Then index = 0
            Me.pb図形.Image = Me.il非対称(index)
        End If
    End Sub

    Private Sub cb対称型_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cb対称型.CheckedChanged
        If Me.cb対称型.Enabled = True Then
            If Me.cb対称型.Checked = False Then
                Me.pb図形.Image = Me.il非対称(0)
                単品図.pb図形.Image = Me.il非対称(0)
                本体端部.pb図形.Image = 本体端部.il非対称.Images(0)
            Else
                Me.pb図形.Image = Me.il対称(0)
                単品図.pb図形.Image = Me.il対称(0)
                本体端部.pb図形.Image = 本体端部.il対称.Images(0)
            End If
        Else
            単品図.pb図形.Image = Me.il非対称(0)
            本体端部.pb図形.Image = 本体端部.il非対称.Images(0)
        End If
    End Sub

こんな感じです。