1. problem
ako prekreslim na pictureboxe jeho image?
Kód:
public void ShowStep(Form pForm, int pStep)
{
Bitmap bmp = new Bitmap(19, 25);
Graphics g = pbStep.CreateGraphics();
//Graphics g = Graphics.FromImage(bmp);
pbStep.Image = bmp;
g.DrawString(pStep.ToString(), new Font("Arial", 17), new SolidBrush(Color.Snow), new Point(0, 0));
//prekreslenie stepu
}
prve nakreslenie je vpohode, lenze ked kreslim druhykrat, tak sa mi to len prekresluje jedno cez druhe, tj prvy string mi nezmizne nech to robim takto alebo aj tym zakomentovanym sposobom
poznamka: BackColor je nastavene na transparent
2. problem
kedze picturebox nepodporuje priehladnost (to co je u neho prihladnost je nieco moc divne, pretoze to len prekresluje pixely svojho parenta na seba
), vytvoril som si podla navodov z webu vlastny picturebox:
Kód:
public class MyPB : Control
{
private Image _image;
public MyPB()
{
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.Opaque, true);
BackColor = Color.Transparent;
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x20;
return cp;
}
}
protected override void OnPaint(PaintEventArgs e)
{
if (Image != null)
{
e.Graphics.DrawImage(_image, 0, 0, _image.Width, _image.Height);
}
}
protected override void OnPaintBackground(PaintEventArgs e)
{
//Do not paint background
}
public Image Image
{
get
{
return _image;
}
set
{
_image = value;
}
}
}
toto uz sa da potom nazvat prihladnost (prave vdaka metode createParameters) lenze ked mi moj picturebox zmeni polohu na forme, pozadie toho _image si nejak zabudol updatnut a ma ho z predoslej pozicie
ak sa to neda pochopit doplnim scrinsoty
zatim dik