Как получить доступ к аргументам события из другого метода?

102
25 июня 2021, 10:20

Вот само событие PaintSurface

public void OnPainting(object sender, SKPaintSurfaceEventArgs e)
{   
        SKSurface surface = e.Surface;
        SKCanvas canvas = surface.Canvas;
        canvas.Clear(SKColors.White); 
}

Я хочу использовать canvas в другом методе,вызываемом при нажатии кнопки. К примеру использовать canvas.Clear(SKColors.White); в методе

private void ClearButton_Clicked(object sender, EventArgs e)
{
      canvas.Clear(SKColors.White); 
}

Я так понимаю,нужно что бы метод тоже получал SKPaintSurfaceEventArgs, но как это реализовать? Где можно почитать об этом или найти подобный пример?

Answer 1

Объявить SKCanvas canvas глобально для этих методов

Answer 2

Вызовите метод InvalidateSurface. Это в свою очередь вызовет событие PaintSurface.

private void ClearButton_Clicked(object sender, EventArgs e)
{
    InvalidateSurface();
}

При этом дополнительные данные можно передавать через поля:

private SKColor _color;
private void ClearButton_Clicked(object sender, EventArgs e)
{
    _color = SKColors.Blue;
    InvalidateSurface();
}

И это поле использовать

public void OnPainting(object sender, SKPaintSurfaceEventArgs e)
{   
    e.Surface.Canvas.Clear(_color); 
}
READ ALSO
Как правильно упаковать проект на гитхаб?

Как правильно упаковать проект на гитхаб?

я сделал простенькое aspnet mvc приложение используя EF Database First далее залил на гитхаб, он при скачке на другой машине он не работает, как правильно...

111
Как получить сущности только с 1 связью many-to-many?

Как получить сущности только с 1 связью many-to-many?

В таблице product_color_group только product_id и color_group_id

78
Как выбрать уникальные значение с привязкой по дате MySql?

Как выбрать уникальные значение с привязкой по дате MySql?

Не могу, выполнит выборкуБуду благодарен любой помощи

107