1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| open System
open System.Drawing
open System.Windows.Forms
open System.Threading
type Cell =
{ Alive : bool;}
type World =
{ Width : int;
Height : int;
Cells: Cell[,];}
let exercise = new Form(MaximizeBox = true, Text = "Exercise", Menu = new MainMenu())
let exercise_Paint(evt : PaintEventArgs) =
let mutable colorizer : SolidBrush = new SolidBrush(Color.Yellow)
let pnBorder : Pen = new Pen(Color.Red)
evt.Graphics.FillRectangle(colorizer, 20, 20, 248, 162)
evt.Graphics.DrawRectangle(new Pen(Color.Red), new Rectangle(20, 20, 248, 162))
evt.Graphics.DrawLine(pnBorder, 20, 20, 205, 20)
let exercisePaint(evt : PaintEventArgs) =
let mutable colorizer : SolidBrush = new SolidBrush(Color.Lime)
let pnBorder : Pen = new Pen(Color.Blue)
evt.Graphics.FillRectangle(colorizer, 20, 20, 248, 162)
evt.Graphics.DrawRectangle(new Pen(Color.Red), new Rectangle(20, 20, 248, 162))
evt.Graphics.DrawLine(pnBorder, 20, 20, 205, 20)
//panel
let panel1 = new Panel()
do panel1.Size <- new System.Drawing.Size(600, 400)
//do panel1.BackgroundImage <- exercisePaint evt
do panel1.BackgroundImageLayout <- ImageLayout.Stretch ||| ImageLayout.Center
do panel1.Anchor <- System.Windows.Forms.AnchorStyles.Top |||
System.Windows.Forms.AnchorStyles.Bottom |||
System.Windows.Forms.AnchorStyles.Left |||
System.Windows.Forms.AnchorStyles.Right
do panel1.Location <- new System.Drawing.Point(12, 12)
do panel1.Name <- "panel1"
do panel1.TabIndex <- 0
//do panel1.MouseClick.Add(fun (e:MouseEventArgs)
// Menu
let fileMenu = exercise.Menu.MenuItems.Add("&File")
let fileMenu_1 = exercise.Menu.MenuItems.Add("&A propos")
let aProposItem : MenuItem =
new MenuItem("a propos", (fun _ _ ->
//let crt = DateTime.Now
exercise.Close()),
Shortcut.CtrlY)
let saveMenuItem : MenuItem =
new MenuItem("Save", (fun _ _ ->
let crt = DateTime.Now
let filename = sprintf "gameofile_%d%02d%02d_%02d%02d%02d%03d.bmp" crt.Year crt.Month crt.Day crt.Hour crt.Minute crt.Second crt.Millisecond
panel1.BackgroundImage.Save(filename, System.Drawing.Imaging.ImageFormat.Bmp)),
Shortcut.CtrlS)
let saveasMenuItem : MenuItem =
new MenuItem("Save As..", (fun _ _ ->
let saveFileDialog = new SaveFileDialog()
saveFileDialog.Filter <- "Bitmap File (*.bmp)|*.bmp|JPeg File (*.jpg)|*.jpg|Gif File (*.gif)|*.gif|Portable Network Graphics (*.png)|*.png"
saveFileDialog.FilterIndex <- 2
saveFileDialog.RestoreDirectory <- true
saveFileDialog.RestoreDirectory <- true
match saveFileDialog.ShowDialog() with
| DialogResult.OK ->
let file = new System.IO.FileInfo(saveFileDialog.FileName)
printfn "%s" file.Extension
let format =
match file.Extension with
| ".jpg" -> System.Drawing.Imaging.ImageFormat.Jpeg
| ".gif" -> System.Drawing.Imaging.ImageFormat.Gif
| ".png" -> System.Drawing.Imaging.ImageFormat.Png
| _ -> System.Drawing.Imaging.ImageFormat.Bmp
panel1.BackgroundImage.Save(saveFileDialog.FileName, format)
| _ -> ()),
Shortcut.CtrlShiftS)
let closeMenuItem : MenuItem =
new MenuItem("Close", (fun _ _ -> exercise.Close()),
Shortcut.CtrlX)
do fileMenu.MenuItems.Add(saveMenuItem) |> ignore
do fileMenu.MenuItems.Add(saveasMenuItem) |> ignore
do fileMenu.MenuItems.Add("-") |> ignore
do fileMenu.MenuItems.Add(closeMenuItem) |> ignore
do fileMenu_1.MenuItems.Add(aProposItem) |> ignore
exercise.Paint.Add exercisePaint
do Application.Run exercise |
Partager