• ベストアンサー

VB.NETでタイマーを利用した時計を作成しています。

棒グラフのような感じにPictureBoxの中にLabelを描画し そのラベルを3つ書き、【秒】、【分】、【時】とわけ、 タイマーを利用してその棒グラフ(Label)を伸ばそうと考えています。またリアルタイムにも対応させたいと考えております。 しかし、どのようにして伸ばせばいいかがわからず苦戦しております。 よろしかったら教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

> リアルタイムにも対応させたいと考えております > どのようにして伸ばせばいいかがわからず苦戦しております。 ごめんなさい。 「何に困っているか」が良く分からないんですが・・・ どの部分が、どう分からないんでしょう? それとも、作成したコードで、何かエラーが発生するとか、 エラーじゃ無いけど、思ったとおりにならないとかなんでしょうか? ラベルを棒グラフに見立てて、横(右方向)に伸ばすのなら、 例えば ------------------------------------------------------------- Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Me.Label1.Size = New System.Drawing.Size(Now.Second, Me.Label1.Size.Height) End Sub ------------------------------------------------------------- とかでできると思いますけど・・・ #「Label.AutoSize プロパティ」はFalseに変更しておいてください。

TISSU
質問者

補足

まず自分の知識不足から、ソースを組む事ができずに苦戦しておりました。お陰でかなり参考になりました。 右方向にはdsuekichiさんのおかげで伸びるようになりました。 次は上方向に伸びるラベルを作っていきたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C#のlabelの表示について

    C#のlabelの表示について カテ違いですが、C#のカテゴリがないのでここで質問させていただきます。 以下の時刻を表示するプログラムを作成したのですが、        //現在の時刻を取得  DateTime dt = DateTime.Now; int Second_1 = dt.Second % 10; int Second_2 = dt.Second / 10; int Minute_1 = dt.Minute % 10; int Minute_2 = dt.Minute / 10; int Hour_1 = dt.Hour % 10; int Hour_2 = dt.Hour / 10; label1.Text = Second_1.ToString(); label2.Text = Second_2.ToString(); label3.Text = Minute_1.ToString(); label4.Text = Minute_2.ToString(); label5.Text = Hour_1.ToString(); label6.Text = Hour_2.ToString(); if (int.Parse(label1.Text) == 0 && int.Parse(label2.Text) == 0) { int a; for (a = 0; a < 10; a++) { pictureBox4.Top += 1; System.Threading.Thread.Sleep(30); } for (a = 0; a < 50; a++) { pictureBox4.Top += 5; System.Threading.Thread.Sleep(10); } pictureBox4.Top = 12; } label1は「秒」の1の位、 label2は「秒」の10の位、 pictureBox4は「分」の1の位の画像を表示しています。 pictureBoxとlabelを重ねて、画像の上に時刻を表示しています。 秒が0になったとき(分の位が一つ上がるとき)、 分の位の画像を移動させて(forループ2つ)再び元の位置に戻しているのですが(pictureBox4.Top = 12;) そのとき秒が「00」とはならず「59」のままで、このループが終わると「00」を飛ばして「01」となります。 ちなみにこの部分はタイマーで0.2秒ごとに回しています。 原因がわかりませんので、ご教授願います。 また、ループには概算で0.8秒かかりますが、この間、タイマーの呼び出しは実行されているのでしょうか? 加えて、pictureBox4.Topの値を動かしていますが、重ねて配置しているlabelも一緒に動いてくれます。 いろいろなサイト様を参考に、 this.label3.Parent = this.pictureBox4; と親コントロールをFormから変更したのですが、このためでしょうか? 変な表現がありましたらご容赦ください。 よろしくお願いします。

  • タイマーソフト探しています

    こんにちわ 私が探すのが下手なのかもしれませんが、もし知っている方がいらっしゃいましたら教えてください。 タイトルの通り、タイマーソフトを探しています 一定の時間を入力したら(目標時間やあと何分といったように)その時間までを、棒グラフが伸びていく、またはコップに入った水がたまっていくみたいな(円グラフでもいいですね)表示がされるタイマーが欲しいのです (表現が難しいですがなんとなくわかっていただけると嬉しいです) 数字で残り時間を感じるのではなく、目視できる感じのものです よろしくお願いします。

  • Pictureboxについて

    VB.netで開発を行っていますが、Pictureboxの描画処理で困っています。 プログラム、処理は以下のような感じです。 プログラム ・1つのPictureboxに対して、8台の機械の状態をそれぞれグラフ描画して、さらに全ての機械の実績値の合計を1つのグラフに  描画する。(計9つのグラフを描画します。) ・画面で任意の機械の絵を選択、スクロールで移動できます。(わかりづらいですが、ライン構想のようなものです。) ・スレッドで10秒間隔で毎回更新されます。(毎回描画しています。) 以上のような描画処理を行っておりますが、納品するパソコンがタッチパネルPC(windows xp embedded)なので、 スペックが低く、機械の絵を動かすと、描画が遅いと客から指摘を受けました。 機械の絵を動かした時、グラフを含め全ての描画を行っていることが原因だと思いますが、前回描画したグラフの内容を消去しないまま、 現在、動かしている機械の絵のみ描画するという方法はPictureboxで可能でしょうか。 (1つのPictureboxの特定の部分のみ描画したい。) また、何か他によい方法があれば教えて頂けないでしょうか。

  • タイマーの使い方

    VB初心者です(6.0を使っています) タイマーの使い方がよく分かっていません。 ボタンを押してからの経過時間をラベルに表示させたいと思っているのですが、 ----------------------------------------------- Private Sub Command1_Click()   Timer1.Interval = 1000   処理1   処理2    ・    ・    ・   Timer1.Interval = 0 End Sub Private Sub Timer1_Timer()   Label1.Caption = [経過時間] End Sub ----------------------------------------------- という感じに書いていると、[処理1]~をしている間はラベルが表示されなくて、 最後の[処理]が終わった直後の[経過時間]のみが表示されます。 こういう形ではタイマーは使用できないのでしょうか? 他のWebサイトなども調べてみたのですが、解決できませんでした。 どなたか教えていただけませんでしょうか?

  • VB.netでグラフ表示にて

    vb.net2010にてタイマー機能を使い3分に一度DBからデータを読み込んで折れ線グラフを作画(pictureboxに)するプログラムを作成したのですが起動しっぱしで使用するとかなり動作が重くなり使えない状態です。 メモリーを解放するなどの解決方法はありますでしょうか。 環境windows 7 Intel(R) core(TM)i3-2120 CPU @ 3.3GHz 実装メモリ 4.0GB 開発環境:vb.net 2010 express

  • 2分30秒と30秒を繰り返すタイマーを探しています

    2分30秒で鳴動、3分で鳴動-2分30秒で鳴動、3分で鳴動-2分30秒で鳴動、3分で鳴動-を繰り返すタイマーを探しています。 利用目的:スポーツ吹矢で「6射3分以内」、「準備時間3分」、次の「6射3分以内」、「準備時間3分間」を繰り返す練習のためタイマーを探しています。 通常のキッチンタイマーだと3分で再スタートボタンを押さなければなりません。 設定後停止ボタンを押すまで「2分30秒で鳴動、3分で鳴動」を繰り返すものを探しています。 カテゴリーが違っていたら妥当な教えて下さい。

  • C#でPictureBox内での図形移動について

    例えばPictureBoxに縦棒グラフを10本描画し、それが時間の経過と共に全体的に1本づつ左に移動して右端には最新の情報が表示されている様なものが作りたい。 それで右の9本をコピーして左端に移動(上書き)し、右端に新しい棒グラフを描画すれば良いと思っているのですが、図形を移動する方法があれば教えて下さい。 コピーする領域とコピー先の基準点を設定して呼び出すだけのメソッドを期待して探したのですが見当たりませんでした。 TranslateTransform()がそれっぽい感じもするのですがよく分かりません。 宜しくお願いします。

  • H8 3664 のタイマー

    こんにちは。皆さんに質問があります。 H8 3664F を使って、1/100秒の精度のストップウォッチを作っているところです。 標準で付いている32.768khzのクリスタルを使って、1秒、0.5秒 etc を作るところまでは出来たのですが、1/100秒が作り出せません。 自分はタイマーはAしか使ったことがない独学の初心者なのですが、どうすれば簡単に1/100秒(10ミリ秒)が作り出せるでしょうか? 1:16.12 (1分16秒12)という感じで表示したいです。 よろしくご教授お願いします。

  • 計算処理について

    時間に関してですが、例えばフォーム上に label1(秒):label2(分):label3(時):label4(日):label5(月) とあり、全てに「1:1:1:1:1:1」とさせて、Timer1で1000ms毎に+1を乗算させる前に IFでラベル1の値が60を超える超えないを判定して、超えた(True)の場合ラベル2に +1を乗算させる。というオリジナル時計を作っているのですが。。。 頻繁にIFとTimerで処理し放置した場合、物凄く重くなりメモリの食いも半端じゃありません。 もっと簡単な時間処理方法はありませんか? (※リアルタイムの値ではなく、オリジナルで時間を計算させたい。ゲーム等とか)

  • C#のタイマーについて

    タイマーのプログラムを作っています。 namespace WindowsApplication3 { public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label4; protected System.Windows.Forms.Label label5; protected System.Windows.Forms.Label label6; protected System.Windows.Forms.Button button1; protected System.Windows.Forms.Button button2; protected DateTime dt; protected DateTime recTime; private System.Windows.Forms.GroupBox groupBox1; protected System.Windows.Forms.RadioButton radioButton1; protected System.Windows.Forms.RadioButton radioButton2; private System.Windows.Forms.Timer timer1; private System.ComponentModel.IContainer components; public Form1() { // // Windows フォーム デザイナ サポートに必要です。 // InitializeComponent(); DateTime dt; dt=DateTime.Now; string a="00"; string b=a; string c=a; label4.Text = string.Format("{0}時{1}分{2}秒", dt.Hour, dt.Minute,dt.Second); label5.Text = string.Format("{0}時{1}分{2}秒",a,b,c); label6.Text = string.Format("{0}時間{1}分{2}秒",a,b,c); // // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。 // dt=DateTime.Now; } /// <summary> /// 使用されているリソースに後処理を実行します。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows フォーム デザイナで生成されたコード /// <summary> /// デザイナ サポートに必要なメソッドです。このメソッドの内容を /// コード エディタで変更しないでください。 <<  文字数オーバーのため 省略>> /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } private void button2_Click(object sender, System.EventArgs e) { Application.Exit(); } protected void timer1_Tick(object sender, System.EventArgs e) { DateTime dt; dt=DateTime.Now; label4.Text = string.Format("{0}時{1}分{2}秒", dt.Hour, dt.Minute,dt.Second); } protected void button1_Click(object sender, System.EventArgs e) { DateTime recTime; recTime=DateTime.Now; TimeSpan k; k=dt-recTime; label5.Text=string.Format("{0}時{1}分{2}秒",recTime.Hour,recTime.Minute,recTime.Second); label6.Text=string.Format("{0}秒",k.Seconds); } } } このプログラムでは ボタン1をクリックするとlabel6に経過時間 label5に記録時間を出力させたいのですが、TimeSpanクラスが上手く使えず、経過時間がマイナスになってしまいます。アドバイスお願いします。

このQ&Aのポイント
  • ガスコンロのバーナー部分は真鍮と何かの合金で熱に強くなっている
  • 見た目が真鍮だと思われるが、実際には真鍮ではない可能性がある
  • 知人から真鍮ではないと聞かされたガスコンロのバーナー部分の材料に疑念を感じている
回答を見る