You can improve the speed and also simplify your development by
not using the class
PictireBox
. This class is helpful in some simplest situations, when you need to show some static picture, or maybe change it sometimes. When you try to do something dynamic, interactive, animated, etc, this class provides no help but presents some additional hassles, eats some extra resources, compromises performance giving absolutely nothing in return. You just use some absolutely redundant additional layer between data and image rendering. Just remove it. I'll explain what to do instead.
Please see my past answers:
How do I clear a panel from old drawing[
^],
draw a rectangle in C#[
^],
Append a picture within picturebox[
^].
Please see my more general answers on GDI+ rendering:
Drawing Lines between mdi child forms[
^],
capture the drawing on a panel[
^],
What kind of playful method is Paint? (DataGridViewImageCell.Paint(...))[
^].
Good luck,
—SA