ズーム可能なpicturebx (Cyotek imagebox、http://cyotek.com/blog/imagebox-update-version-1-1-0-0 ) 内に表示される画像をユーザーがマークできるようにする単純なアプリケーション スケルトンを作成しました。すべてを 2000 以上に見せるために、dockpanelsuite ( https://github.com/dockpanelsuite/dockpanelsuite ) をミックスに追加しました。これは、ナビゲーションを高速化するための追加のパネルと、画像 fx などのツール用の別のパネルが必要なためです。など。提案どおりにパネルをセットアップしました。中央のドックは動かせず、イメージボックス コントロールを保持しています。ただし、画像ボックスのプロパティにアクセスして変更することはできません。正しい名前空間をロードしました。イメージボックスをパブリックに設定しましたが、まだ運がありません。メインの docj の構成は次のようになります。
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Image_Area));
this.canvas_tab = new Cyotek.Windows.Forms.ImageBox();
this.SuspendLayout();
//
// canvas_tab
//
this.canvas_tab.AllowZoom = false;
this.canvas_tab.Cursor = System.Windows.Forms.Cursors.Cross;
this.canvas_tab.Dock = System.Windows.Forms.DockStyle.Fill;
this.canvas_tab.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bicubic;
this.canvas_tab.Location = new System.Drawing.Point(0, 0);
this.canvas_tab.Name = "canvas_tab";
this.canvas_tab.ShortcutsEnabled = false;
this.canvas_tab.Size = new System.Drawing.Size(284, 262);
this.canvas_tab.TabIndex = 2;
this.canvas_tab.TextDisplayMode = Cyotek.Windows.Forms.ImageBoxGridDisplayMode.None;
//
// Image_Area
//
this.AccessibleRole = System.Windows.Forms.AccessibleRole.Window;
this.AllowEndUserDocking = false;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 262);
this.CloseButton = false;
this.CloseButtonVisible = false;
this.ControlBox = false;
this.Controls.Add(this.canvas_tab);
this.Cursor = System.Windows.Forms.Cursors.Cross;
this.DockAreas = WeifenLuo.WinFormsUI.Docking.DockAreas.Document;
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.HideOnClose = true;
this.Name = "Image_Area";
this.Text = "\"\"";
this.ResumeLayout(false);
}
#endregion
public Cyotek.Windows.Forms.ImageBox canvas_tab;
}
ここで、canvas_tab は画像を保持する画像ボックスです。プログラムの主要部分では、次のようにドックを構築します
public partial class main_Form : Form
{
public main_Form()
{
InitializeComponent();
Image_Area main_Canvas = new Image_Area();
main_Canvas.Show(dockPanel, DockState.Document); session_enable();
ただし、main_Form 内の main_Canvas.canvas_tab にしかアクセスできず、上記の session_enable() などの同じ名前空間を共有するメソッドからもアクセスできません。コードの何が問題になっていますか? 私は自分に代わって明らかな愚かさを知らないだけですか?このような落とし穴を回避する方法や、dockpanelsuite を使用するという私の基本的なアプローチの代替案があれば、躊躇しないでください。複数のネストされたスプリッターを使用できることはわかっていますが、ユーザーがパネルを好きなように移動できるようにしたいと考えています。