Всем доброго времени. Вопрос такой : использую Graphics для рисовки нескольких контуров (формат PNG) на PictureBox. Каждый раз когда я нажимаю на RadioBtn изображение перерисовывается согласно рисунку, чей RadioBtn был нажат. Проблема в том, что перерисованные контуры мелькают пока держиться зажатой ЛКМ, потом исчезают. Я наверное какую то мелочь не там написал, но найти не могу. Собсно:
try
{
Image fon=Image.FromFile($"styles/{selectedRadioButton_Text}.png");
pbx_StylePic.BackgroundImage = fon;
Graphics gr = pbx_StylePic.CreateGraphics();
for (int i = 0; i < OrderData.Styles.Count; i++)
{
if (OrderData.Styles[i] != "")
{
Image im = Image.FromFile($"styles/shirt/{OrderData.Styles[i]}.png");
gr.DrawImage(im, new Point(0, 0));
}
}
}
Подскажите, где напутался? Спасибо!
При нажатии на радио кнопку происходит несколько событий, просто нужно использовать правильное. Используйте событие CheckedChanged
вместо Click
.
private void radioButton1_CheckedChanged(Object sender, EventArgs e)
{
var rb = (RadioButton)sender;
if (rb.Checked)
{
//ваш код
}
}
Срабатывать будет строго один раз при включении кнопки. При клике по включенной кнопке повторного выполнения не будет, при снятии выбора с кнопки тоже.
Вообще, по уму, вы не должны рисовать вручную. Я не знаю на чем именно вы там рисуете, а вы этого не написали, но я бы дела это по-другому:
Таким образом не придется ловить ошибки связанные с перерисовкой окна после сворачивания в трей, изменения размера и т.д.
try
{
Graphics gr = pbx_StylePic.CreateGraphics();
pbx_StylePic.Refresh();
foreach (string s in OrderData.Styles)
{
if (s != "")
{
Image im = Image.FromFile($"styles/shirt/{s}.png");
gr.DrawImage(im, new Point(0, 0));
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
BindingListCollectionView является источником для DataGrid
ЗдравствуйтеПодскажите, пожалуйста, я пытаюсь преобразовать массив double в массив complex, как мне говорили ранее, в действительной части мы записываем...
Объясните простым, человеческим языком, кто такой и зачем нужен делегат в ООП вообще и в С# в частности? Спасибо!
Как изменить информацию о exe версию файла, версию продукта? К примеру изменить дату создания можно через IOFile