Roulette.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using GUI.Properties;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. namespace GUI
  12. {
  13. public partial class Roulette : Panel
  14. {
  15. float degree;
  16. public float Degree
  17. {
  18. get => degree;
  19. set
  20. {
  21. degree = value % 360;
  22. var bkup = BackgroundImage;
  23. BackgroundImage = rotateImage(sourceImage, degree);
  24. bkup?.Dispose();
  25. }
  26. }
  27. Bitmap sourceImage;
  28. public Roulette()
  29. {
  30. sourceImage = new(Resources.Roulette);
  31. Degree = 0;
  32. DoubleBuffered = true;
  33. }
  34. static Bitmap rotateImage(Bitmap b, float angle)
  35. {
  36. Bitmap returnBitmap = new Bitmap(b.Width, b.Height);
  37. Graphics g = Graphics.FromImage(returnBitmap);
  38. g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
  39. g.TranslateTransform((float)b.Width / 2, (float)b.Height / 2);
  40. g.RotateTransform(360 - angle);
  41. g.TranslateTransform(-(float)b.Width / 2, -(float)b.Height / 2);
  42. g.DrawImage(b, new Point(0, 0));
  43. g.Dispose();
  44. return returnBitmap;
  45. }
  46. }
  47. }