2010-12-27 7 views
4

私はリサイズを作成する必要がダイナミックタイムラインコントロールを作成するには、次のようになりますかを制御します。しかし、どういうわけかこのアプローチは正しいとは思わない。のWinforms:</p> <p><img src="https://i.stack.imgur.com/a6GVb.png" alt="alt text"> 現在、私は自分自身をピクチャボックス/パネルとオーバーライドのOnPaintイベントを取って検討し、すべてのものを描いています:

もっと簡単な方法があるのか​​もしれません。 どうすればこのようなコントロールを作成できますか?

+2

WPFを使用することができれば、このタイプの問題の人生はより簡単になります。 WinFormsアプリケーション内でWPFコントロールをホストすることができます –

答えて

3

いいえ、そうするのが正しい方法です。 TableLayoutPanelのようなものを使用しようとすると、ひどく痛いだけではなく、深刻な泥が吸い込まれて2番目以上に塗装されます。それはコードの束を取るが、それはハードコードではありません。ループの機会もたくさんあります。

パネルのAutoScrollMinSizeでスクロール表示を取得します。 PaintイベントまたはOnPaintオーバーライドでAutoScrollPositionを渡すGraphics.TranslateTransform()を使用します。後者は、コードを分けておくためにPanelから独自のコントロールを引き出すことをお勧めします。外観をカスタマイズしたり、楽しんだりするための柔軟性があります。

+0

ありがとう、これは本当にうまく動作します。 – JBeurer

+0

うわー、これは速かった、これは少なくとも一週間かかると思われる。素晴らしい、あなたはそれを見栄えにするために6日以上を持っています。よくやった。 –

0

リテラルコントロールをオーバーライドしたり、CompositeControlクラスから継承したり、描画するのではなく、HTML(テーブル)とJavascriptでレンダリングする方が簡単でしょう。

1

私が前回このようにしたとき、私はビットマップとしてグリッドを作成し、画像を画像ボックスにロードして画像に直接描画しました。ペイントイベントを使用する際の問題は、描画を再描画しない限り、最小化などで永続的ではありません。

関連する問題

 関連する問題