@ -1,5 +1,6 @@
module internal I m a g e S e r v i c e s
open S y s t e m . I O
open S y s t e m . D r a w i n g
open S y s t e m . D r a w i n g . I m a g i n g
open D e a t h S o c k e t
@ -41,11 +42,11 @@
let drawRGBAGrid (spec: RGBASpec) =
use original = Bitmap.FromFile s p e c . o r i g i n a l P a t h
use temp = new B i t m a p ( o r i g i n a l )
use clone = temp.Clone(new Rectangle(0, 0 , temp.Width, temp.Height), P i x e l F o r m a t . F o r m a t 32 b p p A r g b )
use temp = new Bitmap ( o r i g i n a l )
use clone = temp.Clone (new Rectangle(0, 0 , temp.Width, temp.Height), P i x e l F o r m a t . F o r m a t 32 b p p A r g b )
use graphics = G r a p h i c s . F r o m I m a g e ( c l o n e )
use pen = new Pen ((makeBrushFromRGBASpec spec), width = s p e c . p e n W i d t h )
graphics.DrawImage(original,new Rectangle(0, 0 , clone.Width, c l o n e . H e i g h t ) )
graphics.DrawImage (original,new Rectangle(0, 0 , clone.Width, c l o n e . H e i g h t ) )
let horizontalLines =
createHorizontalLines (clone.Size.Width) (clone.Size.Height) ( s p e c . r o w s )
let verticalLines =
@ -56,11 +57,50 @@
// You are up to here. Need to draw lines and add i m a g e .
let drawSkiaGrid () =
let imageInfo = new SKImageInfo (500, 500 )
// Set C a n v a s / S u r f a c e
let imageInfo = new SKImageInfo (2592, 1456 )
use surface = S K S u r f a c e . C r e a t e ( i m a g e I n f o )
let canvas = s u r f a c e . C a n v a s
canvas.Clear ( S K C o l o r s . W h i t e )
let horizontalLines = createHorizontalLines 500 1000 6
let verticalLines = createVerticalLines 500 1000 9
23
// Set SKPaint O b j e c t s
use stroke = new SKPaint ( )
stroke.Style <- S K P a i n t S t y l e . S t r o k e
stroke.StrokeWidth <- float32 3
stroke.Color <- S K C o l o r s . B l u e V i o l e t
use imageFill = new SKPaint ( )
imageFill.Style <- S K P a i n t S t y l e . F i l l
// Add B i t m a p
//let fileStream = File.Open (@"C:\Users\craig\Desktop\test.jpg", F i l e M o d e . O p e n )
let byteArray = F i l e . R e a d A l l B y t e s ( @ " C : \ U s e r s \ c r a i g \ D e s k t o p \ t e s t . j p g " )
use memStream = new M e m o r y S t r e a m ( b y t e A r r a y )
// this w o r k s ...
use skStream = new SKManagedStream ( m e m S t r e a m )
use bitmap = SKBitmap.Decode ( s k S t r e a m )
use shader = SKShader.CreateBitmap (bitmap, SKShaderTileMode.Mirror, S K S h a d e r T i l e M o d e . M i r r o r )
imageFill.Shader <- s h a d e r
canvas.DrawPaint ( i m a g e F i l l )
// Draw L i n e s
let horizontalLines = createHorizontalLines 2592 1456 6
let verticalLines = createVerticalLines 2592 1456 9
for hLine in horizontalLines d o
let x1 = float32 h L i n e . [ 0 ] . X
let y1 = float32 h L i n e . [ 0 ] . Y
let x2 = float32 h L i n e . [ 1 ] . X
let y2 = float32 h L i n e . [ 1 ] . Y
canvas.DrawLine (x1, y1, x2, y2, s t r o k e )
for vLine in verticalLines d o
let x1 = float32 v L i n e . [ 0 ] . X
let y1 = float32 v L i n e . [ 0 ] . Y
let x2 = float32 v L i n e . [ 1 ] . X
let y2 = float32 v L i n e . [ 1 ] . Y
canvas.DrawLine (x1, y1, x2, y2, s t r o k e )
use snapshot = surface.Snapshot ( )
use data = snapshot.Encode (SKEncodedImageFormat.Png, 100 )
use saveStream = File.OpenWrite ( @ " C : \ U s e r s \ c r a i g \ D e s k t o p \ t e s t - c o m p l e t e . j p g " )
data.SaveTo ( s a v e S t r e a m )
printfn "Skia Sharp image s a v e d . "