Chocolade19721309

Untitled

May 9th, 2024
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.88 KB | None | 0 0
  1. using System;
  2. using System.Drawing;
  3. using System.Drawing.Imaging;
  4. using System.Windows.Forms;
  5.  
  6. namespace Screen_Recorder
  7. {
  8. public class CustomButton : Button
  9. {
  10. private bool _DisplayFocusCues = true;
  11. private Image _originalImage;
  12. private Image _clickImage;
  13. private Image img;
  14.  
  15. public CustomButton()
  16. {
  17. this.FlatStyle = FlatStyle.Flat;
  18. this.FlatAppearance.BorderSize = 0;
  19. this.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); // Transparent
  20. this.FlatAppearance.MouseDownBackColor = Color.FromArgb(0, 255, 255, 255); // Transparent on click
  21. this.FlatAppearance.MouseOverBackColor = Color.FromArgb(0, 255, 255, 255); // Transparent on hover
  22. this.DisplayFocusCues = false;
  23.  
  24. // Assume Properties.Resources.YourImageResource is the resource identifier for your image
  25. img = ResizeImage(Properties.Resources.icons8_record_32, 50, 50);
  26. this.Image = img;
  27. this.Size = img.Size;
  28. _originalImage = img;
  29. }
  30.  
  31. protected override void Dispose(bool disposing)
  32. {
  33. if (disposing)
  34. {
  35. _originalImage?.Dispose();
  36. _clickImage?.Dispose();
  37. }
  38. base.Dispose(disposing);
  39. }
  40.  
  41. protected override bool ShowFocusCues => _DisplayFocusCues;
  42.  
  43. public bool DisplayFocusCues
  44. {
  45. get { return _DisplayFocusCues; }
  46. set { _DisplayFocusCues = value; }
  47. }
  48.  
  49. public new Image Image
  50. {
  51. get { return base.Image; }
  52. set
  53. {
  54. base.Image = value;
  55. _originalImage = value;
  56. _clickImage = CreateClickImage(_originalImage); // Recreate click image if the original changes
  57. }
  58. }
  59.  
  60. protected override void OnMouseDown(MouseEventArgs mevent)
  61. {
  62. base.OnMouseDown(mevent);
  63. if (_clickImage != null)
  64. this.Image = _clickImage;
  65. }
  66.  
  67. protected override void OnMouseUp(MouseEventArgs mevent)
  68. {
  69. base.OnMouseUp(mevent);
  70. _originalImage = img;
  71. this.Image = _originalImage;
  72. }
  73.  
  74. private Image CreateClickImage(Image original)
  75. {
  76. if (original == null)
  77. return null;
  78.  
  79. Bitmap newBitmap = new Bitmap(original);
  80. BitmapData bmpData = newBitmap.LockBits(
  81. new Rectangle(0, 0, newBitmap.Width, newBitmap.Height),
  82. ImageLockMode.ReadWrite,
  83. newBitmap.PixelFormat);
  84.  
  85. IntPtr ptr = bmpData.Scan0;
  86. int bytes = Math.Abs(bmpData.Stride) * newBitmap.Height;
  87. byte[] rgbValues = new byte[bytes];
  88.  
  89. System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
  90.  
  91. for (int i = 0; i < rgbValues.Length; i += 4)
  92. {
  93. rgbValues[i] = (byte)(rgbValues[i] * 0.8); // Blue
  94. rgbValues[i + 1] = (byte)(rgbValues[i + 1] * 0.8); // Green
  95. rgbValues[i + 2] = (byte)(rgbValues[i + 2] * 0.8); // Red
  96. // Alpha (rgbValues[i + 3]) is unchanged
  97. }
  98.  
  99. System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes);
  100. newBitmap.UnlockBits(bmpData);
  101.  
  102. return newBitmap;
  103. }
  104.  
  105. private Image ResizeImage(Image originalImage, int width, int height)
  106. {
  107. Bitmap newImage = new Bitmap(width, height);
  108. using (Graphics gfx = Graphics.FromImage(newImage))
  109. {
  110. gfx.DrawImage(originalImage, 0, 0, width, height);
  111. }
  112. return newImage;
  113. }
  114. }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment