Lista mi znika tylko na chwile, gdy sie obraz narysuje na panelu to mi sie pojawia spowrotem.
A listbox znajduje się poza panelem na którym rysuje zdjęcie.
W funkcji wyświetlania zdjęć mam jeszcze dodawanie tekstu lub grafiki jako znaku wodnego ale bez tego też się pojawia problem.
Mam jeszcze pytanie jak mogę sobie poprawić jakość rysowanych obrazów na panelu? Bo skaluje sobie obrazy żeby sie zmnieścił na panelu ale troche jakość nie jest dobra.
A oto cały kod:
[Kod]
// wybranie fotki w listBoxsie
private void listBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox.Items.Count == 0)
{
return;
}
else
{
if (listBox.SelectedIndex != -1)
{
panel1.BackColor = Color.Transparent;
string fname = listBox.SelectedItem.ToString();
wyswietlenieFotki(fname);
}
}
}
// wyswietla fotki
public void wyswietlenieFotki(string liczba)
{
using (Graphics g = panel1.CreateGraphics())
{
Bitmap bmp = new Bitmap(fname);
// skala wyswietlania obrazu na panelu bez zniekształceń
SizeF RozmiarObrazu = new SizeF(bmp.Width, bmp.Height);
float skala = Math.Min(panel1.Width / RozmiarObrazu.Width, panel1.Height / RozmiarObrazu.Height);
skalaP = skala;
RozmiarObrazu.Width *= skala;
RozmiarObrazu.Height *= skala;
// wyswietlenie obrazu
g.DrawImage(bmp, 0, 0, RozmiarObrazu.Width, RozmiarObrazu.Height);
// rysowanie podpisu tekst if (textBox_Tekst.Text != "" && radioButton_Tekstowy.Checked == true)
{
Brush myBrush = new SolidBrush(Color.FromArgb(opac, kolor_Tekstu));
SizeF sz = g.MeasureString(textBox_Tekst.Text, myFont);
g.DrawString(textBox_Tekst.Text, myFont, myBrush, new Point(X, Y));
}
//rysowanie loga if (textBox_Tekst.Text != "" && radioButton_Graficzny.Checked == true)
{
Bitmap TGhost = new Bitmap(logo.Width, logo.Height);
Graphics transGraphics = Graphics.FromImage(TGhost);
ColorMatrix tranMatrix = new ColorMatrix();
tranMatrix.Matrix33 = (float)Przezro;
ImageAttributes transparentAtt = new ImageAttributes();
transparentAtt.SetColorMatrix(tranMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
transGraphics.DrawImage(logo, new Rectangle(0, 0, TGhost.Width, TGhost.Height), 0, 0, TGhost.Width, TGhost.Height, GraphicsUnit.Pixel, transparentAtt);
transGraphics.Dispose();
g.DrawImage(TGhost, Y, X);
}
}
}
// usuwanie zaznaczonej fotki
private void button_Usun_Click(object sender, EventArgs e)
{
int c = listBox.SelectedIndex;
if (listBox.SelectedItems.Count > 0)
{
listBox.Items.Remove(listBox.SelectedItem);
}
if (c > 0)
{
stan = 1;
c
Edytowano 1 raz. Ostatnio 2010-02-09 17:37:38 przez grad3d.