2017-11-27 37 views
0

캡션이있는 그림 상자 (컨트롤)는 어떻게 만들 수 있습니까? 이미이 그림 상자 위에 텍스트를 추가 할 수 있지만 그림 상자 아래에 텍스트를 넣고 싶습니다. 그러나 텍스트의 위치가 Picturebox 크기를 초과하면 표시되지 않습니다. 텍스트의 테두리가 &이면 너무 좋을 것입니다.VB.net에서 캡션이있는 Picturebox

도와주세요.

Public Class neoPic 
    Inherits PictureBox 
    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) 
     MyBase.OnPaint(e) 
     e.Graphics.DrawString("Caption ", New Font("Cambria", 10), Brushes.Black, New PointF(0, 60)) 
    End Sub 
End Class 
+2

은 다음 '그 수 있기 때문에 레이블 사용을 고려해야합니다을 Paint 이벤트로 처리 할 수 ​​있습니다. pbox를 얼마나 크게 만들었으며 라벨을 숨길 지 여부는 전적으로 귀하에게 달려 있습니다. –

+3

PictureBox와 Label을 "단위"로 사용하려면 해당 컨트롤이있는 ** UserControl **을 만듭니다. PictureBox가 나머지 공간을 차지하면서 Label이 항상 맨 아래와 UserControl의 너비에 있도록 앵커 속성을 설정할 수 있습니다. –

+0

Thanks @ Idle_Mind and HansPassant, 완전히 새로운 컨트롤을 만들어야하는 것 같습니다. 나는 그 일을 전에하지 않았다. 나는 튜토리얼을 찾아보아야한다. 고맙습니다. –

답변

0

내가 UserControl을을 만들 결국 :

여기에 코드입니다. 다른 개발자의 시간을 절약 할 수 있도록 작업 코드를 여기에 넣었습니다. 내 프로젝트 (PicTitled라는)에 UserControl을 추가하고 PictureBox (PTPicturebox) 및 Label (PTLabel)을 서로 쌓아 추가했습니다. 그런 다음 PicTitled에 대한 텍스트 & Image 속성과 마우스 클릭에 대한 이벤트 처리기를 추가했습니다.

Public Class PicTitled 
    Public Shadows Event MouseClick As MouseEventHandler 


    Overrides Property Text As String 
     Get 
      Return PTLabel.Text 
     End Get 
     Set(ByVal Value As String) 
      PTLabel.Text = Value 
     End Set 
    End Property 

    Property Image As Image 
     Get 
      Return PTPicturebox.Image 
     End Get 
     Set(ByVal Value As Image) 
      PTPicturebox.Image = Value 
     End Set 
    End Property 

    Private Sub PicTitled_MouseClick(sender As Object, e As MouseEventArgs) Handles MyBase.MouseClick, PTPicturebox.MouseClick, PTLabel.MouseClick 
     RaiseEvent MouseClick(Me, e) 
    End Sub 


End Class 

그리고 기본 폼에, 내가 좋아하는 코드 추가 :이 그림 상자 * 아래 * 갈 경우

Private Sub CreateObj() 
     Dim pbPicture As New PicTitled 
     pbPicture.Name = "Object" 
     pbPicture.Location = New System.Drawing.Point(40, 40) 
     pbPicture.Text = "Object" 
     pbPicture.Image = My.Resources.IMG 
     pbPicture.Size = New System.Drawing.Size(50, 50) 
     AddHandler pbPicture.MouseClick, AddressOf PictureBox_MouseClick 

     Panel1.Controls.Add(pbPicture) 
    End Sub 

    Private Sub PictureBox_MouseClick(sender As Object, e As MouseEventArgs) 
     'Do stuff when mouse click happens... 
    End Sub