GraphX (Graphics Library)

    • Beta

    Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Scream.

      GraphX (Graphics Library)

      Beschreibung:
      Eine (noch) kleine Grafikbibliothek, die ständig um Funktioinen erweitert wird. Ursprünglich sollte es eigentlich nur eine Blur-Bibliothek werden, da dachte ich mir, dass diese allerdings zu wenig Funktionen enthält um es Wert zu sein, veröffentlicht zu werden.

      Funktionen:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Public Class GraphX
      2. Public Function GrayScale(ByVal img As Image) As Image
      3. Public Function SetImageAlpha(ByVal img As Image, ByVal Alpha As Integer)
      4. Public Function Invert(ByVal img As Image) As Image
      5. Public Function RotateImage(ByVal img As Image, ByVal angle As Single) As Image
      6. Public Function ChangePixelFormat(ByVal img As Image, ByVal pixel_format As PixelFormat) As Image
      7. End Class
      8. Public Class BackBuffer
      9. 'Properties
      10. Public ReadOnly Property Graphics() As Graphics
      11. Public ReadOnly Property Width() As Integer
      12. Public ReadOnly Property Height() As Integer
      13. 'Subs
      14. Public Sub ChangePixelFormat(ByVal pixel_format As PixelFormat)
      15. Public Sub ExportImage(ByVal Path As String, ByVal Format As ImageFormat)
      16. Public Sub SetTexture(ByVal img As Image)
      17. 'Functions
      18. Public Shared Function FromImage(ByVal img As Image) As BackBuffer
      19. Public Function GetTexture() As Image
      20. Sub New(ByVal Width As Integer, ByVal Height As Integer, Optional ByVal PixelFormat As PixelFormat)
      21. End Class
      22. Public Class Blurer
      23. 'Events
      24. Public Event BlurProgressStarted(ByVal maximum_value As Integer)
      25. Public Event BlurProgressChanged(ByVal value As Integer)
      26. Public Event BlurProgressPreview(ByVal bmp As Bitmap)
      27. Public Event BlurProgressEnded(ByVal result_bmp As Bitmap)
      28. 'Properties
      29. Public Property Image() As Bitmap
      30. Public Property BlurIntensity() As Integer
      31. Public Property BlurerMode() As BlurMode
      32. 'Functions
      33. Public Function Blur() As Bitmap
      34. Sub New(ByVal Image As Bitmap, ByVal BlurIntensity As Integer, ByVal BMode As BlurMode)
      35. Public Enum BlurMode
      36. Vertical
      37. Horizontal
      38. Diagonal
      39. BackwardDiagonal
      40. Gaussian
      41. DoubleDiagonal
      42. End Enum
      43. End Class
      44. Public Class MandelBrotFractal
      45. 'Properties
      46. Public Property Bounds() As Size
      47. Public Property Alpha() As Integer
      48. Public Property AntiAliasing() As Integer
      49. 'Subs
      50. Public Sub EnableAntiAliasing()
      51. Public Sub DisableAntiAliasing()
      52. Public Sub SetColor(ByVal VectorType As VectorType, ByVal c As Color)
      53. Public Enum VectorType
      54. Outline
      55. Outline2
      56. Outline3
      57. Outline4
      58. Outline5
      59. Outline6
      60. Outline7
      61. Outline8
      62. MandelBrotOutline5
      63. MandelBrotOutline4
      64. MandelBrotOutline3
      65. MandelBrotOutline2
      66. MandelBrotOutline1
      67. ShadowInline
      68. ShadowOutline
      69. MandelBrot
      70. End Enum
      71. 'Functions
      72. Public Function Render() As Image
      73. End Class


      Screenshot:
      Spoiler anzeigen

      Blur Test:



      MandelBrot Fractal Test:


      Grayscale:


      Invert:


      Rotate 180°:


      Mandelbrot Fraktal:



      Verwendete Programmiersprache:
      VB.NET
      IDE: Visual Basic 2008

      Systemanforderungen:
      .NET Framework 2.0

      Download:
      graphx-1.0.0.0.zip (7KB)

      Lizenz/Weitergabe:
      Freeware, Decompilen ist nicht erlaubt, ebensowenig wie Mergen (eincompilieren)


      Feedback bzw. neue Funktionsvorschläge erwünscht ;)

      MfG

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Krissel095“ ()

      GreyScale, Rotieren und Invertieren ist nicht schwer aber das Blur ist gut gemacht :thumbsup:

      Funktionen 1/5 wenn mehr dazu kommen die es noch nicht gibt würd ich sogar 4/5 sagen aber dass ist bis jetzt nur Wrapper bis aufs Blur
      kriegst du ein Mandelbrotfraktal hin oder Wolken ? ... das wäre richtig geil ^^
      aber für den Anfang schon mal gut

      Set und GetTexture würd ich ja zusammen packen in eine Property

      aber du kriegst n Pluspunkt weil du es fürs FW 2.0 gemacht hast ;)
      Danke für das Feedback, hab das Mandelbrot-Fraktal eingebaut ;) Ich werde heute noch eine Property einbauen, mit der man die Farben festlegen kann, da diese momentan zufallsgeneriert sind.

      Leider habe ich zu den Wolken bis jetzt nichts gefunden, hab bei Wikipedia nach "Wolken" und "Fog" gesucht, bekomm leider nirgendwo erklärt, wie es funktioniert. Falls du einen nützlichen Link für mich hättest wäre ich sehr dankbar :)



      MfG
      das sieht genial aus oO
      daraus wird sicher noch was
      Kleines Update, die Farben sind jetzt frei einstellbar:



      Quellcode:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Dim mb As New GraphX.Drawing.MandelBrotFractal(New Size(PictureBox1.Width, PictureBox1.Height))
      2. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.MandelBrot, Color.Black)
      3. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.ShadowInline, Color.Lime)
      4. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.ShadowOutline, Color.FromArgb(255, 90, 90, 90))
      5. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.MandelBrotOutline1, Color.FromArgb(255, 90, 90, 90))
      6. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.MandelBrotOutline2, Color.FromArgb(255, 90, 90, 90))
      7. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.MandelBrotOutline3, Color.FromArgb(255, 90, 90, 90))
      8. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.MandelBrotOutline4, Color.FromArgb(255, 90, 90, 90))
      9. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.MandelBrotOutline5, Color.FromArgb(255, 90, 90, 90))
      10. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.Outline, Color.FromArgb(255, 90, 90, 90))
      11. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.Outline2, Color.FromArgb(255, 80, 80, 80))
      12. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.Outline3, Color.FromArgb(255, 70, 70, 90))
      13. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.Outline4, Color.FromArgb(255, 60, 60, 90))
      14. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.Outline5, Color.FromArgb(255, 50, 50, 90))
      15. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.Outline6, Color.FromArgb(255, 40, 40, 90))
      16. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.Outline7, Color.FromArgb(255, 30, 30, 90))
      17. mb.SetColor(GraphX.Drawing.MandelBrotFractal.VectorType.Outline8, Color.FromArgb(255, 20, 20, 90))
      18. mb.AntiAliasing = 2
      19. PictureBox1.Image = mb.Render()



      Ich werd das Update der DLL heute abend hier zum Download anbieten, weil ich bis dahin noch ein paar neue Funktionen einbauen wollte ;)

      MfG

      VB.NET-Quellcode

      1. Dim blurer As New GraphX.Drawing.Blurer(PictureBox1.Image, 15, GraphX.Drawing.Blurer.BlurMode.Gaussian)
      2. PictureBox1.Image = blurer.Blur()


      In dem Fall wird PictureBox1.Image geblurt ;) Das erste Attribut ist das Bild, das zweite die Intensität und das dritte die Methode, in dem Fall Gaußscher Weichzeichner.

      MfG

      PS: Mal eine Frage am Rande, wärt ihr an einer GameLib mit GDI interessiert? Wenn ja würde ich die in GraphX mit einbauen.
      warum so komisch ?
      mach doch entweder ne Sub mit ByRef oder ne Function
      Hier hab ich mal ein Beispiel:

      VB.NET-Quellcode

      1. Public Function Blue(ByVal Pica As Image) As Image
      2. Using Bmp As Bitmap = Pica.Clone()
      3. Using IAttributes As New ImageAttributes
      4. Using G As Graphics = Graphics.FromImage(Bmp)
      5. IAttributes.SetColorMatrix(New ColorMatrix(New Single()() _
      6. {New Single() {-0, 5.0F, 2, 0.0F, 2, 0.0F, 0.0F, 0.0F}, _
      7. New Single() {-0, 5.0F, -1.0F, 0, 0.0F, 0, 0.0F}, _
      8. New Single() {-0, 5.0F, 0.0F, -1.0F, 0.0F, 0.0F}, _
      9. New Single() {-0, 5.0F, 0.0F, 0.0F, 1.0F, 0.0F}, _
      10. New Single() {0, 5.0F, 1.0F, 1.0F, 0.0F, 0.0F}}))
      11. G.DrawImage(Bmp, New Rectangle(0, 0, Bmp.Width, Bmp.Height), _
      12. 0, 0, Bmp.Width, Bmp.Height, GraphicsUnit.Pixel, IAttributes)
      13. Return Bmp.Clone()
      14. End Using
      15. End Using
      16. End Using
      17. End Function


      P.s Danke an jvbsl, jetzt weiß ich noch mehr von vb ;P XD

      Lg Scream
      Für den Sepia Effekt kann man auch die ColorMatrix benutzen..
      Ich weiß nicht ob der Negative Effekt schon dabei ist, aber für alle Fälle, hier ist er:

      VB.NET-Quellcode

      1. Public Function Negative(Byval Pica As Image ) As Image
      2. Using Bmp As Bitmap = Pica.Clone()
      3. Using IAttributes As New ImageAttributes
      4. Using G As Graphics = Graphics.FromImage( Bmp )
      5. IAttributes.SetColorMatrix( New ColorMatrix( New Single()() _
      6. {New Single() {-2,5F, 0F, 0F, 0F, 0F}, _
      7. New Single() {0F, -1F, 0F, 0, 0F}, _
      8. New Single() {0F, 0F, -1F, 0F, 0F}, _
      9. New Single() {0F, 0F, 0F, 1F, 0F}, _
      10. New Single() {1F, 1F, 1F, 0F, 0F}}))
      11. G.DrawImage( Bmp, New Rectangle( 0, 0, Bmp.Width, Bmp.Height ), _
      12. 0, 0, Bmp.Width, Bmp.Height, GraphicsUnit.Pixel, IAttributes )
      13. Return Bmp.Clone()
      14. End Using
      15. End Using
      16. End Using
      17. End Function