スタイルを FixedToolWindow 等、サイズ変更を禁止する指定にしても、キャプション(タイトルバー)をダブルクリックすると画面(Mdi子ウィンドウの場合は親のクライアント領域)全体に最大化してしまいます。もう一度キャプションをダブルクリックできる場合は「まだ」マシ ...
カテゴリ:Programming > C#
C# ToolStrip の位置を保存復元する
ボタンをフローティングにしようと ToolStripContainer を採用しました。このコンテナを使うと簡単にフローティングボタンが実現できるのですが、位置を変更しても次の再起動ではまた位置が初期化されてしまいます。そのため、この位置情報を再起動後も復元したいと思い試行 ...
C# 表示の誤差やちらつきを止める
現在制作を進めているマップエディタのパーツ選択ウィンドウでの表示がとてもちらついていて、かつ、描画誤差を出ていました。ここから本制作に変更するまでの手順について説明してみます。 最初のコードBGチップが16x16個並んで描画する処理です。最初のコードは以下のよう ...
自前シリアライズのススメ
シリアライズとは、データ保存のための手法で、なんらかのフォーマットに変換して様々なデータをまとめて保存するための技法です。厳密には違うんですが、まあ、ここではそういう事にしておいてください。各種データをひとつにまとめる事が出来るため、データの入出力によく ...
MemoryPack を導入した
現在私が開発中のマップエディタでは、外部ライブラリとして唯一 MessagePack を採用していました。これは大変優秀なシリアライザーで、このライブラリのおかげで高速実行と省メモリを両立できていました。ところが先日、なんとなくネットをぶらついていたら、同じ作者による ...
C# 高速化の考え方
現在作成進行中のマップエディタで、実行速度が遅い箇所がありました。それが以下のプログラム部分です。 for (int x = 0; x < w; ++x) { for (int y = 0; y < h; ++y) { var id = rscGrd.Areas[x + rcChr.X, y + rcChr.Y]; ...
C# 長いパスを途中省略で表示
ラベルなどのコントロールで Text を設定した際、コントロールのクライアントサイズより長い文字列を指定すると、入りきらない表示部分が消えて表示されます。後方が消えている事を示す ... を表示するには、AutoSize = false; とした上で、AutoEllipsis = true; とします。 ...
VS2022 重い処理の改善
マップエディタの機能拡張で、連続貼り付けに対応したところ、この処理が存外に重たかったので、その調査と改善を行いました。どこが重くて、どのように調査して、どう対応していったのか、実際の対応手順を元に追い込み方について説明したいと思います。最初の状態少し長い ...
C# 事前に処理を終わらせる
前回の C# リソースを使い回すの時に、処理が遅い例としてマップの配置データの順番で表示する処理を紹介しました。この遅い理由がループの途中で Bitmapリソースの作成と解放をしているためでした。この遅い処理を事前に処理しておくとどうなるのかというプログラム例です。 ...
C# リソースを使い回す
Unity等で描画の高速化をする際によく言われるのが、ドローコールを減らすという対応です。これは描画処理を呼び出す回数を減らすという意味です。実際にはそれぞれのケースで全く対応方法は異なりますが、ここではリソースの使い回しを例として、実際にどのような内容で、ど ...