PictureBox에 대한 투명한 제어
내 C # 양식에는 다운로드 이벤트에서 다운로드 비율을 표시하는 레이블이 있습니다.
this.lblprg.Text = overallpercent.ToString("#0") + "%";
Label 컨트롤의 BackColor 속성이 투명하게 설정되어 있고 PictureBox 위에 표시되기를 원합니다. 하지만 제대로 작동하지 않는 것 같고 회색 배경이 보이며 그림 상자 위에 투명하게 보이지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?
Label 컨트롤은 투명도를 잘 지원합니다. 디자이너가 레이블을 올바르게 배치하지 못하게 할뿐입니다. PictureBox 컨트롤은 컨테이너 컨트롤이 아니므로 Form이 레이블의 부모가됩니다. 따라서 양식의 배경이 표시됩니다.
양식 생성자에 약간의 코드를 추가하여 쉽게 수정할 수 있습니다. 이제 레이블이 양식 대신 그림 상자에 상대적이므로 레이블의 Parent 속성을 변경하고 Location을 다시 계산해야합니다. 이렇게 :
public Form1() {
InitializeComponent();
var pos = this.PointToScreen(label1.Location);
pos = pictureBox1.PointToClient(pos);
label1.Parent = pictureBox1;
label1.Location = pos;
label1.BackColor = Color.Transparent;
}
런타임에 다음과 같이 보입니다.
또 다른 접근 방식은 디자인 타임 문제를 해결하는 것입니다. 그것은 단지 속성을 취합니다. System.Design에 대한 참조를 추가하고 프로젝트에 클래스를 추가하고 다음 코드를 붙여 넣습니다.
using System.ComponentModel;
using System.Windows.Forms;
using System.Windows.Forms.Design; // Add reference to System.Design
[Designer(typeof(ParentControlDesigner))]
class PictureContainer : PictureBox {}
그냥 사용할 수 있습니다
label1.Parent = pictureBox1;
label1.BackColor = Color.Transparent; // You can also set this in the designer, as stated by ElDoRado1239
배경없이 그릴 TextRenderer를 사용하여 텍스트를 그릴 수 있습니다.
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
TextRenderer.DrawText(e.Graphics,
overallpercent.ToString("#0") + "%",
this.Font,
new Point(10, 10),
Color.Red);
}
전체 백분율 값이 변경되면 pictureBox를 새로 고칩니다.
pictureBox1.Refresh();
Graphics.DrawString을 사용할 수도 있지만 TextRenderer.DrawText (GDI 사용)가 DrawString (GDI +)보다 빠릅니다.
여기 에 다른 답변 과 여기 에 DrawText 참조를 보십시오.
당신의 디자인을 위해 쉽습니다. 패널 내부에 레이블을 배치 할 수 있습니다. 패널의 배경 이미지 설정은 원하는 모든 이미지입니다. 설정된 레이블 배경이 투명합니다.
Windows Form과 함께 Visual Studio를 사용하면 using System.Drawing 을 추가 하여 레이블 또는 기타 요소에 투명도를 적용 할 수 있습니다 . 에 Form1.designer.cs입니다 이런 식으로 당신은 (에 BackColor에서 외관에서) 속성 패널에서 투명성을 사용할 수있을 것이다. 또는 Designer.cs에서 코드를 편집하십시오 . this.label1.BackColor = System.Drawing.Color.Transparent;
참고 URL : https://stackoverflow.com/questions/9387267/transparent-control-over-picturebox
'code' 카테고리의 다른 글
방랑 할 수 있도록 포트 8080을 사용하는 프로세스를 어떻게 죽일 수 있습니까? (0) | 2020.11.19 |
---|---|
zeromq가 localhost에서 작동하지 않는 이유는 무엇입니까? (0) | 2020.11.19 |
MySQL JOIN과 LEFT JOIN의 차이점 (0) | 2020.11.19 |
오류 LNK2005, 이미 정의 되었습니까? (0) | 2020.11.19 |
PHP 7 simpleXML (0) | 2020.11.19 |