none
gif表示→数秒後gifの位置にimgファイルを表示するには? RRS feed

  • 質問

  • visual basic 14.0を使用しており初心者です。

    exeファイルクリック後特定の位置にgif画像を表示、数秒後にその位置にimgファイルを表示するにはどうすればよいでしょうか?やり方とコマンドを教えてください。

    2015年8月25日 23:02

回答

  • PictureBoxにコードで画像を表示する方法がわからないのですね?
    であれば、私が上に紹介したページから辿れる、

    PictureBoxコントロールに簡単に画像を表示する
    http://dobon.net/vb/dotnet/graphics/pictureboximage.html

    に書かれています。例えば以下のコードは、リソースにあるImage2というファイルを表示します。
    これを数秒後に表示するようにすればOKです。そのやり方を紹介したページも上で紹介していますので、トライしてみて下さい。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        PictureBox1.Image = My.Resources.Image2
    End Sub


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク supremekun 2015年8月28日 0:07
    2015年8月26日 7:54
    モデレータ
  • プログラムを作るというのは、したいことを実現する方法を考え、その方法を積み上げていくこと、ということは、理解されているでしょうか。パッと見て、次の事柄の積み上げかと思います。希望する場所に絵を表示する。「絵を表示した瞬間」からカウントダウンを開始する。カウントが0になった時に、希望する場所に絵を表示する/入れ替える。 こういった、「手順の分解」が出来ているでしょうか。出来ていないなら、コードを書く前の段階です。出来ているなら、こういった手順のうちの一つ一つについて質問を分けてください。

    Jitta@わんくま同盟

    • 回答としてマーク supremekun 2015年8月28日 0:07
    2015年8月26日 23:31
  • supremekun さま よろしく。

    PictureBox の Image と BackGroundImage を使って書いてみました。 Timer を使っています。(デザイナで設定)

    Public Class Form1
        Dim status As Integer = 0
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ' 無題1=無題1.gif Resources
            ' 無題2=無題2.jpg Resources
            Me.PictureBox1.BorderStyle = BorderStyle.Fixed3D    '分り易く
            Me.PictureBox1.BackgroundImage = My.Resources.無題1
            Me.PictureBox1.BackgroundImageLayout = ImageLayout.Zoom
        End Sub
    
        Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
            'Timer
            Timer1.Interval = 3000  '3 秒
            Timer1.Start()    ' 処理開始
        End Sub
    
        Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Select Case status
                Case 0
                    Me.PictureBox1.Image = My.Resources.無題2
                    Me.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
                    'Timer リセット
                    status = 1
                    Timer1.Interval = 2000  '2 秒
                    Timer1.Start()    ' 処理再開
                Case 1
                    Me.PictureBox1.Image = Nothing
                    Me.Timer1.Dispose()
            End Select
        End Sub
    End Class


    • 編集済み ShiroYuki_Mot 2015年8月27日 2:23 コードのコメントにコピーミス 訂正
    • 回答としてマーク supremekun 2015年8月28日 0:07
    2015年8月27日 2:18
  • 自分の思い通りに動くとうれしいですよね。何十年経っても私は今でもそうですよ。きっと、みなさんもそうだと思います。

    さて、まず書籍で勉強されることを私もお勧めします。何事も基礎は大事だと思うのです。そのあとは、実現されたいことのサンプルコードをネットで探されるのが良いと思います。そのコードを理解し、改良するために基礎は大いに役立ちます。もちろん、その際にMSDNなどでクラスのヘルプを見ることも重要です。それでもわからなければ、また忌憚なくご質問下さい。一人でも多くの人がプログラム技術を高められ、そして楽しまれることを微力ながら応援しております。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク supremekun 2015年8月29日 13:51
    2015年8月28日 0:49
    モデレータ
  • supremekun さま 回答への選出ありがとうございます。

    尚、いきなりコードを書いたので、解説や説明が書けていませんでした。
    ここで細々と書くのも何ですから、自分の Blog に纏めます。
    以下の URL ですが、2015/09/01 に公開予定です。 もう少し、お待ち下さい。

    VB PictureBox に一時的に別の Image を
    http://shiroyuki-mot-says.blogspot.com/2015/09/vb-picturebox-show-temporary-image.html

    • 回答としてマーク supremekun 2015年8月29日 13:51
    2015年8月28日 2:44

すべての返信

  • visual basic 14.0とは、Visual Studio 2015のversion 14.・・・のことですよね。一般的にはversionで会話することはなく、Visual Studio 2015のように製品名を用います。また、Visual Studioのエディションも書かれると良いです。例えば、Visual Studio 2015のExpressなどです。
    ご質問される際に留意される点が以下にまとまっておりますので、一度ご覧ください。これに沿ってきっちりと全て答える必要はありませんが、できるだけ回答者に質問内容、および問題が発生している背景が伝わることを意識して書かれると幸いです。

    フォーラムのご利用方法(質問の投稿)について
    https://social.msdn.microsoft.com/Forums/ja-JP/b2074c04-2e91-414d-8e9e-d634be311e31?forum=announceja

    さて、ご質問内容ですが、gif画像を表示し、その位置にimgファイルを数秒後に表示したいというのはわかりますが、特定の位置というのがはっきりしません。例えば、デスクトップ上なのか、そのexeファイルをクリックして起動して表示されるフォーム上なのかです。
    的確なアドバイスを得るには、的確な質問が重要です。最初は無理かもしれませんが、技術力が上がっていけば的確な質問ができる力も自ずとついてきますので、そのような質問ができるように継続的に意識されていくと良いと思います。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2015年8月26日 1:14
    モデレータ
  • すみません。以後そのように書き込みます。

    exeのフォーム上でということです。

    また特定の位置と書き込みましたがexeのフォーム上で自分の置きたい位置動かせるのなら何処でもいいです。
    2015年8月26日 1:35
  • >exeのフォーム上でということです。

    了解しました。さて、どの辺りまでできているのでしょうか? 単にgif画像、imgファイルを表示することはできているのでしょうか? 画像の位置を指定することがわからないのでしょうか? 数秒後に表示するということがわからないのでしょうか?
    とりあえず以下をご紹介しておきます。

    画像、印刷(GDI+)編メニュー
    http://dobon.net/vb/dotnet/graphics/index.html

    また、数秒後に表示することを実現するには以下の方法が簡単ですが、以下のページにも書かれているように、数秒間、そのアプリケーションの操作が全くできなくなります。これが困る場合には、System.Timers.Timer等を使って、非同期(別スレッド)で画像更新を処理すると良いでしょう。

    (参考)
    指定した時間停止する
    http://dobon.net/vb/dotnet/process/sleep.html

    vb.netのタイマーについて
    http://okwave.jp/qa/q8695285.html


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2015年8月26日 2:03
    モデレータ
  • 説明不足で申し訳ないです。gifは表示できるのですがその後その位置に画像を指定、数秒後に表示する方法が分からないので質問いたしました。
    2015年8月26日 2:19
  • 了解しました。
    同じ位置に表示するのであれば、2枚目は画像ファイルを入れ替えて表示するだけです。数秒後に表示するのは、先に私が紹介したページを参考にしてみて下さい。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2015年8月26日 2:50
    モデレータ
  • <同じ位置に表示するのであれば、2枚目は画像ファイルを入れ替えて表示するだけです。

    すみません。入れ替え方法が分からないので教えていただけると幸いです。

    2015年8月26日 3:04
  • >すみません。入れ替え方法が分からないので教えていただけると幸いです。

    画像の表示方法はいろいろありますので、今、表示されているコードをご提示下さい。そのコードが適切かどうかはわかりませんが、とりあえずそのコードに沿って改修していく方向で進めることにしましょう。

    (追記)
    #コードを提示される時は、公開してはまずい情報が無いことに気を付けて下さい。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2015年8月26日 4:09
    モデレータ
  • <画像の表示方法はいろいろありますので、今、表示されているコードをご提示下さい。そのコードが適切かどうかはわかりませんが、とりあえずそのコードに沿って改修していく方向で進めることにしましょう。
    わかりました。宜しくお願い致します。コードは以下のとおりです。少し前に新たに作成し直した為gifファイルのみしか出していないです。
    solution explorer>Myproject>Resources>Add  Existing Fileからgif file選択。picture box taskから同じgifファイルを選び表示させているといった状態です。

     Public Class Form1
        Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click

        End Sub

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        End Sub
    End Class

    2015年8月26日 7:14
  • PictureBoxにコードで画像を表示する方法がわからないのですね?
    であれば、私が上に紹介したページから辿れる、

    PictureBoxコントロールに簡単に画像を表示する
    http://dobon.net/vb/dotnet/graphics/pictureboximage.html

    に書かれています。例えば以下のコードは、リソースにあるImage2というファイルを表示します。
    これを数秒後に表示するようにすればOKです。そのやり方を紹介したページも上で紹介していますので、トライしてみて下さい。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        PictureBox1.Image = My.Resources.Image2
    End Sub


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク supremekun 2015年8月28日 0:07
    2015年8月26日 7:54
    モデレータ
  • プログラムを作るというのは、したいことを実現する方法を考え、その方法を積み上げていくこと、ということは、理解されているでしょうか。パッと見て、次の事柄の積み上げかと思います。希望する場所に絵を表示する。「絵を表示した瞬間」からカウントダウンを開始する。カウントが0になった時に、希望する場所に絵を表示する/入れ替える。 こういった、「手順の分解」が出来ているでしょうか。出来ていないなら、コードを書く前の段階です。出来ているなら、こういった手順のうちの一つ一つについて質問を分けてください。

    Jitta@わんくま同盟

    • 回答としてマーク supremekun 2015年8月28日 0:07
    2015年8月26日 23:31
  • supremekun さま よろしく。

    PictureBox の Image と BackGroundImage を使って書いてみました。 Timer を使っています。(デザイナで設定)

    Public Class Form1
        Dim status As Integer = 0
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ' 無題1=無題1.gif Resources
            ' 無題2=無題2.jpg Resources
            Me.PictureBox1.BorderStyle = BorderStyle.Fixed3D    '分り易く
            Me.PictureBox1.BackgroundImage = My.Resources.無題1
            Me.PictureBox1.BackgroundImageLayout = ImageLayout.Zoom
        End Sub
    
        Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
            'Timer
            Timer1.Interval = 3000  '3 秒
            Timer1.Start()    ' 処理開始
        End Sub
    
        Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Select Case status
                Case 0
                    Me.PictureBox1.Image = My.Resources.無題2
                    Me.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
                    'Timer リセット
                    status = 1
                    Timer1.Interval = 2000  '2 秒
                    Timer1.Start()    ' 処理再開
                Case 1
                    Me.PictureBox1.Image = Nothing
                    Me.Timer1.Dispose()
            End Select
        End Sub
    End Class


    • 編集済み ShiroYuki_Mot 2015年8月27日 2:23 コードのコメントにコピーミス 訂正
    • 回答としてマーク supremekun 2015年8月28日 0:07
    2015年8月27日 2:18
  • trapemiya様、Jitta様、ShiroYuki_Mot様ご回答ありがとうございました。又、丁寧に分かりやすく教えていただきありがとうございます。ようやく作成することが出来ました。始めたばかりであまりコードの書き方等が分からないため入門書の購入を検討したいと思います!

    2015年8月28日 0:04
  • 自分の思い通りに動くとうれしいですよね。何十年経っても私は今でもそうですよ。きっと、みなさんもそうだと思います。

    さて、まず書籍で勉強されることを私もお勧めします。何事も基礎は大事だと思うのです。そのあとは、実現されたいことのサンプルコードをネットで探されるのが良いと思います。そのコードを理解し、改良するために基礎は大いに役立ちます。もちろん、その際にMSDNなどでクラスのヘルプを見ることも重要です。それでもわからなければ、また忌憚なくご質問下さい。一人でも多くの人がプログラム技術を高められ、そして楽しまれることを微力ながら応援しております。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク supremekun 2015年8月29日 13:51
    2015年8月28日 0:49
    モデレータ
  • supremekun さま 回答への選出ありがとうございます。

    尚、いきなりコードを書いたので、解説や説明が書けていませんでした。
    ここで細々と書くのも何ですから、自分の Blog に纏めます。
    以下の URL ですが、2015/09/01 に公開予定です。 もう少し、お待ち下さい。

    VB PictureBox に一時的に別の Image を
    http://shiroyuki-mot-says.blogspot.com/2015/09/vb-picturebox-show-temporary-image.html

    • 回答としてマーク supremekun 2015年8月29日 13:51
    2015年8月28日 2:44