(C# .Net) ToolStripのボタンのイメージ位置の調整について

このQ&Aのポイント
  • C# .NetのToolStripに配置されたToolStripButtonのイメージの位置を調整する方法について説明します。
  • 問題として、イメージの描画位置がToolStripButtonの中心よりも下方にずれてしまうということが起こります。
  • イメージをサイズ指定した場合でも、ToolStripButtonの中心に描画する方法はないのかという疑問があります。
回答を見る
  • ベストアンサー

(C# .Net) ToolStripのボタンのイメージ位置の調整について

[環境]VisualStudio2008, .Net Framwork2.0 C# .Netにて、ToolStripにToolStripButtonを配置して、その中にイメージを表示するように設定しています。 その際、イメージのサイズを33*33ピクセルに指定して表示したいと考えており、ToolStripButtonには以下のように値を設定しています。 ・AutoSize = False ・Size = 33, 33 ・ImageAlign = MiddleCenter ・ImageScaling = None しかし、このように設定すると、イメージの描画位置がToolStripButtonの中心点より5ピクセルほど下方にずれて、イメージが見切れてしまいます。 (ToolStripのImageScalingSizeに、33 * 33を指定したりもしましたが、変化がありませんでした。) イメージをサイズ指定した場合でも、ToolStripButtonの中心ぴったりに描画する方法はないでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
回答No.1

 こんばんは。  ツールボタンの周辺には(2, 2)程の余白間隔があるので、ツールボタンのサイズを(37, 37)で調整すれば、(33, 33)のイメージがピッタリと表示出来ます。  尚、コントロールには必ずと言って良い程、余白間隔があります。

simanoha
質問者

お礼

お礼が遅くなり申し訳ありません。 なるほど、コントロールには余白があるものなのですね。 コントロールサイズか、画像サイズを調整するかしなければならないのですね…。 コントロールの余白間隔をうまく扱えるようになれば、かなりGUIデザインが自分のものになるといえるのかもしれませんね。 どうもありがとうございました!

関連するQ&A

  • C# DrawImage 物理サイズでなく、ピクセルサイズでの描画

    C# で、 Image img = new Bitmap(fileName); Point p = this.PointToClient( new Point( e.X, e.Y ) ); で画像と描画位置を決め、 e.Graphics.DrawImage(img, p); で、そこに画像を描画するのですが、写真によって、同じ1024*768ピクセルなのに、表示される大きさがばらばらです。 Graphics.DrawImage メソッド (Image, Point)の説明を読むと、「指定した位置に、指定した Image を元の物理サイズで描画します」とあり、「元の物理サイズで描画」に問題があることがわかりました。 質問ですが、「指定した位置に、指定した Image をピクセルサイズで描画」するメソッドは何でしょう?探し方が悪いのか、見つけられません。

  • C#.NET ボタンのサイズを見た目通りにしたい

    ボタンを左から並べて描画したいのですが、等間隔に並べるのがうまくいきません。 AutoSize=trueにしてボタンのサイズを自動調整するようにしましたが、実際のコントロールのwidthは変更されないようで画像のような出力になります。 表示上のボタンの右端の座標を取得するかコントロールの実サイズを自動的に表示上のボタンに合わせる方法はありますか? よろしくお願いします

  • C# PictureBoxへの描画を行うとメッセージボックスが表示されません。

    いつもお世話になっております。 ふと、PictureBoxに描画をしてみようかと思い Paintイベントに以下のようにして描画を行いました。   myBitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);   Graphics g = Graphics.FromImage(myBitmap);   pictureBox1.Image = myBitmap;      ・      ・(g.FillRectangle(・・・);など)      ・ (myBitmapはBitmap型のグローバル変数です。) PictureBoxは、自由にサイズ変更可能なフォームに貼り付け、四方をanchorで固めています。 そのためサイズが変更されるたびに、描画するときBitmapのサイズも変更しないといけないので この処理を毎回通っています。 (その部分が何だか無駄な気がするのですが、他にいい方法が思いつきませんでした。) ところが、描画はうまくいったのですが、メッセージボックスを出すと そのメッセージボックスが一度Altキーを押さないと表示されません。 色々調べて、ダブルバッファリングというものがあると知りました。 そこでPaintイベントで最初にこの処理をし   Image image = new Bitmap(pictureBox1.Width, pictureBox1.Height);   g = Graphics.FromImage(image); gに描画し終わってから   e.Graphics.DrawImage(image, 0, 0); としてみると、今度はフォームを移動するのにも一瞬フリーズするようになってしまいました。 (あまり深くプログラミングをしたことがないので、理解しきれなくてやり方が悪いのかも知れません・・・) メッセージボックスが表示されないのは、PictureBoxの描画のため 他のコントロールの描画ができていなためだと推測しているのですが どう直していいかわかりません。 どなたか、わかる方がいましたらよろしくお願いします。 <補足> OS:Vista VisualStudio2008 .NET Framework3.5

  • 図形の大きさをピクセルで指定する方法

    2*3ピクセルや5*7ピクセル等、長方形等の図形のサイズをピクセルで 指定し、画面上でどういう風に見えるか確認したいんですけど、 良い方法、フリーソフト等ないでしょうか。 更に図形を描画する位置を指定できれば最高です。

  • イメージサイズを%で表示するやり方

    ASP.NETでツールボックスにあるウェブフォームのイメージサイズをピクセルではなく%で表示したいのですが、無理でしょうか?ご存知の方がいらっしゃりましたらアドバイスお願いいたします。

  • C言語でBMP画像(ファイル)は作れますか?(Unix使用)

    こんにちは。私は30代男性です。 先日はBMPを読み込んでUnix上でイメージ表示するプログラムを作ろうとしていましたが、ようやく完成しました。ご協力いただいた方々にお礼申し上げます。 次にチャレンジしようとしていることは、「BMPファイルに画像を書き出す。」というものです。画像は横4ピクセル・高さ256ピクセルのサイズで、とりあえず1行ずつRBG値を増やして「色の作成」の時に出てくるような長方形型の色指定用のグラデーション表示をしてみようかなと思っています。 →つまり、色の変化はRBG(0,0,0,)からRBG(255,255,255)にずらしていくという感じです(黒→灰色→白とでもいいましょうか)。 これはパレットに設定する値をfor分でループさせればいいかなと思いましたが、プログラムでBMP画像を作り出すことは無理なんでしょうか?ファイルがない状態からファイル名を指定して作るとしたら、offset値をどのように設定したらいいのかなど、わからないことだらけです。 アドバイスを頂けたらありがたいです。どうぞ宜しくお願い致します。

  • 困ってます(泣)『イメージファイルが小さすぎます。縦横それぞれ32ピクセル 以上でなくてはいけません』

    困っています。オークションで画像をアップロードしようとしているのですが、元の画像が小さく、ペイントなどで画像を大きくしても『イメージファイルが小さすぎます。縦横それぞれ32ピクセル 以上でなくてはいけません』と表示されてしまいアップロードできません。元は、プロパティで「ビットマップイメージ・サイズ240KB・ディスク上のサイズ244KB」を、「JPEGイメージ・346KB・ディスク上のサイズ348KB」に苦難して変更したのですが、同じ様に『イメージファイルが小さすぎます。縦横それぞれ32ピクセル 以上でなくてはいけません』と、なってしまいます。元が小さいので、ペイントで変更してもダメなのでしょうか?こういった、小さい画像を処理をする無料のソフトなどあるのでしょうか?パソコン初心者です。専門用語はわかりません。助けてください!!

  • gimpで2pixelの直線を引くには?

    gimp2.8.22をポータブルで使っています。 『鉛筆で描画』で、サイズを2.00にすると、ポインタは、十字のような形になり、 ShiftキーとCtrlキーを使って始点と終点を結んで直線を引くと、 そのまま十字がドラッグしたイメージで、線の幅は、3pixelになってしまいます。 サイズを3.00にした場合も、幅は、3pixelです。 2pixelの直線を引くのに、何か良い方法はないでしょうか。 できれば、同じような方法がよいのですが。

  • イメージマップをクリックしたら枠がでてしまいます。

    <area shape="rect" coords="288,1,429,195" href="index.html" alt="ホーム"> このように画像にイメージマップでエリア設定したのですが、クリックするとイメージマップの枠がオレンジ色で表示されてしまいます。 CSSでborder:none;を適応させているんですが、枠が消えません。 普通の画像の枠は表示されません。イメージマップだけです。 どうしたら消えるでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • エクセル2003のグラフサイズ

    エクセル2003のグラフのサイズをセルに合わせたいのですが・・・・ セルと幅と高さを広げて大きくし、その中にグラフをキッチリ入れたいと思っています。 図形描画のオブジェクトの選択でサイズは指定できますが、セルの数値がピクセルになっているので・・・。効率のよい方法はありますか?

専門家に質問してみよう