PictureBox에서 작은 그림을 페인트하고 싶습니다 (4 x 32px 이미지를 연속으로). 그래서 OnPaint 메서드를 재정의하거나 PictureBox를 확장하는 새 구성 요소를 만들어야합니까? 난 안 여기 자바에서 근무하는,하지만이 시도 : InitializeComponent 메서드의C#에서 재정의 된 OnPaint 메서드가있는 PictureBox
this.pictureBox1 = new System.Windows.Forms.PictureBox()
{
protected override void OnPaint(PaintEventArgs e)
{
// If there is an image and it has a location,
// paint it when the Form is repainted.
Graphics g = e.Graphics;
// Draw a string on the PictureBox.
g.DrawString("Test, is that working?",
new Font("Arial", 10), System.Drawing.Brushes.Blue, new Point(30, 30));
}
}
전체 코드 :
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Tools));
this.pictureBox1 = new System.Windows.Forms.PictureBox()
{
protected override void OnPaint(PaintEventArgs e)
{
// If there is an image and it has a location,
// paint it when the Form is repainted.
Graphics g = e.Graphics;
// Draw a string on the PictureBox.
g.DrawString("Test, is that working?",
new Font("Arial", 10), System.Drawing.Brushes.Blue, new Point(30, 30));
}
}
this.vscrollb = new System.Windows.Forms.VScrollBar();
this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// pictureBox1
//
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Left;
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.InitialImage = null;
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(264, 262);
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
//
// vscrollb
//
this.vscrollb.Location = new System.Drawing.Point(0, 0);
this.vscrollb.Name = "vscrollb";
this.vscrollb.Size = new System.Drawing.Size(20, 80);
this.vscrollb.TabIndex = 0;
//
// vScrollBar1
//
this.vScrollBar1.Dock = System.Windows.Forms.DockStyle.Right;
this.vScrollBar1.Location = new System.Drawing.Point(267, 0);
this.vScrollBar1.Name = "vScrollBar1";
this.vScrollBar1.Size = new System.Drawing.Size(17, 262);
this.vScrollBar1.TabIndex = 1;
this.vScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.HandleScroll);
//
// Tools
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.Black;
this.ClientSize = new System.Drawing.Size(284, 262);
this.Controls.Add(this.vScrollBar1);
this.Controls.Add(this.pictureBox1);
this.Name = "Tools";
this.Text = "Tools";
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
}
이 코드는 문제없이 작동합니다. – ionden
이것을 InitializeComponent 메소드에 추가했습니다. –
@ PiotrŁużecki : 'InitializeComponent'에 아무 것도 추가하지 마십시오. 변경 될 때마다 디자이너가이 메서드를 덮어 씁니다. "after"를 추가 할 수 있습니다. "InitializeComponent"가 생성자에서 호출됩니다. – ChrFin