PictureBox.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. //
  2. // System.Windows.Forms.PictureBox
  3. //
  4. // Author:
  5. // Joel Basson ([email protected])
  6. //
  7. //
  8. using System.Drawing;
  9. namespace System.Windows.Forms {
  10. /// <summary>
  11. /// Represents a Windows PictureBox control.
  12. ///
  13. /// </summary>
  14. public class PictureBox: Control{
  15. bool stretch;
  16. int height, width, dwidth, dheight;
  17. Gdk.Pixbuf pic1, pic2;
  18. string filevalue;
  19. public PictureBox () : base ()
  20. {
  21. }
  22. internal override Gtk.Widget CreateWidget () {
  23. Gtk.Image ibox = new Gtk.Image();
  24. return ibox;
  25. }
  26. public string File {
  27. set {
  28. filevalue = value;
  29. Gdk.Pixbuf pic1 = new Gdk.Pixbuf(filevalue);
  30. ((Gtk.Image)Widget).Pixbuf = pic1;
  31. }
  32. }
  33. public PictureBoxSizeMode SizeMode {
  34. set{
  35. if (value == PictureBoxSizeMode.StretchImage){
  36. Stretch();
  37. }
  38. if (value == PictureBoxSizeMode.Normal){
  39. Normal();
  40. }
  41. if (value == PictureBoxSizeMode.CenterImage){
  42. CenterImage();
  43. }
  44. if (value == PictureBoxSizeMode.AutoSize){
  45. AutoSize();
  46. }
  47. }
  48. }
  49. private void Stretch () {
  50. Gdk.Pixbuf pic1 = new Gdk.Pixbuf(filevalue);
  51. height = pic1.Height;
  52. width = pic1.Width;
  53. dheight = ((Gtk.Image)Widget).HeightRequest;
  54. dwidth = ((Gtk.Image)Widget).WidthRequest;
  55. ((Gtk.Image)Widget).Pixbuf = pic1.ScaleSimple(dwidth, dheight, Gdk.InterpType.Bilinear);
  56. }
  57. private void Normal () {
  58. Gdk.Pixbuf pic1 = new Gdk.Pixbuf(filevalue);
  59. ((Gtk.Image)Widget).Pixbuf = pic1;
  60. ((Gtk.Image)Widget).SetAlignment(0, 1);
  61. }
  62. private void CenterImage () {
  63. Gdk.Pixbuf pic1 = new Gdk.Pixbuf(filevalue);
  64. ((Gtk.Image)Widget).Pixbuf = pic1;
  65. ((Gtk.Image)Widget).SetAlignment((float)0.5, (float)0.5);
  66. }
  67. private void AutoSize () {
  68. Gdk.Pixbuf pic1 = new Gdk.Pixbuf(filevalue);
  69. height = pic1.Height;
  70. width = pic1.Width;
  71. ((Gtk.Image)Widget).HeightRequest = height;
  72. ((Gtk.Image)Widget).WidthRequest = width;
  73. ((Gtk.Image)Widget).Pixbuf = pic1;
  74. }
  75. }
  76. }