Example #1
0
 private void openToolStripMenuItem_Click(object sender, EventArgs e)
 {
     try
     {
         using (OpenFileDialog openFileDialog = new OpenFileDialog())
         {
             openFileDialog.Filter           = "xml files (*.xml) | *.xml";
             openFileDialog.FilterIndex      = 1;
             openFileDialog.RestoreDirectory = true;
             if (openFileDialog.ShowDialog(this) == DialogResult.OK)
             {
                 if (openFileDialog.FileName != "")
                 {
                     var stream        = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read);
                     var xmlSerializer = new XmlSerializer(BookCover.GetType());
                     BookCover = (BookCoverGraphics)xmlSerializer.Deserialize(stream);
                     stream.Close();
                     ContextRectangle = Rectangle.Empty;
                     toModify         = (StringGraphics)null;
                     pictureBox.Refresh();
                 }
             }
         }
     }
     catch (Exception exception)
     {
         MessageBox.Show(exception.Message, "Error", MessageBoxButtons.OK);
     }
 }
Example #2
0
        protected Rectangle GetStringRectangle(StringGraphics item)
        {
            using (Graphics g = pictureBox.CreateGraphics())
            {
                Rectangle stringRect = new Rectangle();
                switch (item.Alignment)
                {
                case StringAlignment.Center:
                    stringRect = new Rectangle
                    {
                        Height = (int)g.MeasureString(item.Text, item.Font).Height,
                        Width  = (int)g.MeasureString(item.Text, item.Font).Width,
                        X      = item.Position.X + BookCover.Position.X -
                                 (int)g.MeasureString(item.Text, item.Font).Width / 2,
                        Y = item.Position.Y + BookCover.Position.Y
                    };
                    break;

                case StringAlignment.Near:
                    stringRect = new Rectangle
                    {
                        Height = (int)g.MeasureString(item.Text, item.Font).Height,
                        Width  = (int)g.MeasureString(item.Text, item.Font).Width,
                        X      = item.Position.X + BookCover.Position.X,
                        Y      = item.Position.Y + BookCover.Position.Y
                    };
                    break;

                case StringAlignment.Far:
                    stringRect = new Rectangle
                    {
                        Height = (int)g.MeasureString(item.Text, item.Font).Height,
                        Width  = (int)g.MeasureString(item.Text, item.Font).Width,
                        X      = item.Position.X + BookCover.Position.X -
                                 (int)g.MeasureString(item.Text, item.Font).Width,
                        Y = item.Position.Y + BookCover.Position.Y
                    };
                    break;
                }

                return(stringRect);
            }
        }
Example #3
0
 private void newToolStripMenuItem_Click(object sender, EventArgs e)
 {
     //pop new dialog here
     using (NewDialog form = new NewDialog())
     {
         form.ShowDialog(this);
         Debug.WriteLine(form.DialogResult);
         if (form.DialogResult == DialogResult.OK)
         {
             BookCover.Size       = new Size(form.DialogData.Width, form.DialogData.Height);
             BookCover.SpineWidth = form.DialogData.SpineWidth;
             BookCover.Position   = new Point(pictureBox.Width / 2 - BookCover.Size.Width / 2, pictureBox.Height / 2 - BookCover.Size.Height / 2);
             BookCover.TextList.Clear();
             BookCover.Color                 = Color.LightPink;
             BookCover.SpineAuthor.Text      = String.Empty;
             BookCover.SpineTitle.Text       = String.Empty;
             BookCover.FrontCoverAuthor.Text = String.Empty;
             BookCover.FrontCoverTitle.Text  = String.Empty;
         }
     }
     ContextRectangle = Rectangle.Empty;
     toModify         = (StringGraphics)null;
     pictureBox.Refresh();
 }
Example #4
0
        private void pictureBox_MouseClick(object sender, MouseEventArgs e)
        {
            if ((e.Button & MouseButtons.Right) != 0)
            {
                foreach (var item in BookCover.TextList)
                {
                    using (Graphics g = pictureBox.CreateGraphics())
                    {
                        Rectangle stringRect = new Rectangle();
                        switch (item.Alignment)
                        {
                        case StringAlignment.Center:
                            stringRect = new Rectangle
                            {
                                Height = (int)g.MeasureString(item.Text, item.Font).Height,
                                Width  = (int)g.MeasureString(item.Text, item.Font).Width,
                                X      = item.Position.X + BookCover.Position.X -
                                         (int)g.MeasureString(item.Text, item.Font).Width / 2,
                                Y = item.Position.Y + BookCover.Position.Y
                            };
                            break;

                        case StringAlignment.Near:
                            stringRect = new Rectangle
                            {
                                Height = (int)g.MeasureString(item.Text, item.Font).Height,
                                Width  = (int)g.MeasureString(item.Text, item.Font).Width,
                                X      = item.Position.X + BookCover.Position.X,
                                Y      = item.Position.Y + BookCover.Position.Y
                            };
                            break;

                        case StringAlignment.Far:
                            stringRect = new Rectangle
                            {
                                Height = (int)g.MeasureString(item.Text, item.Font).Height,
                                Width  = (int)g.MeasureString(item.Text, item.Font).Width,
                                X      = item.Position.X + BookCover.Position.X -
                                         (int)g.MeasureString(item.Text, item.Font).Width,
                                Y = item.Position.Y + BookCover.Position.Y
                            };
                            break;
                        }


                        if (stringRect.Contains(e.Location)) //check if mouse point is inside the rectangle
                        {
                            ContextRectangle = stringRect;
                            toModify         = item;
                            pictureBox.Refresh();
                            return;
                        }
                        else
                        {
                            ContextRectangle = new Rectangle();
                            toModify         = (StringGraphics)null;
                            pictureBox.Refresh();
                        }
                    }
                }
            }
        }
Example #5
0
        private void pictureBox_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if ((e.Button & MouseButtons.Left) != 0)
            {
                DialogResult   result   = DialogResult.Cancel;
                StringGraphics toadd    = new StringGraphics();
                StringGraphics toremove = new StringGraphics();
                foreach (var item in BookCover.TextList)
                {
                    using (Graphics g = pictureBox.CreateGraphics())
                    {
                        Rectangle stringRect = new Rectangle();
                        switch (item.Alignment)
                        {
                        case StringAlignment.Center:
                            stringRect = new Rectangle
                            {
                                Height = (int)g.MeasureString(item.Text, item.Font).Height,
                                Width  = (int)g.MeasureString(item.Text, item.Font).Width,
                                X      = item.Position.X + BookCover.Position.X - (int)g.MeasureString(item.Text, item.Font).Width / 2,
                                Y      = item.Position.Y + BookCover.Position.Y
                            };
                            break;

                        case StringAlignment.Near:
                            stringRect = new Rectangle
                            {
                                Height = (int)g.MeasureString(item.Text, item.Font).Height,
                                Width  = (int)g.MeasureString(item.Text, item.Font).Width,
                                X      = item.Position.X + BookCover.Position.X,
                                Y      = item.Position.Y + BookCover.Position.Y
                            };
                            break;

                        case StringAlignment.Far:
                            stringRect = new Rectangle
                            {
                                Height = (int)g.MeasureString(item.Text, item.Font).Height,
                                Width  = (int)g.MeasureString(item.Text, item.Font).Width,
                                X      = item.Position.X + BookCover.Position.X - (int)g.MeasureString(item.Text, item.Font).Width,
                                Y      = item.Position.Y + BookCover.Position.Y
                            };
                            break;
                        }


                        if (stringRect.Contains(e.Location)) //check if mouse point is inside the rectangle
                        {
                            //g.DrawRectangle(new Pen(Color.FromArgb(255, 255 - BookCover.Color.R, 255 - BookCover.Color.G, 255 - BookCover.Color.B)), stringRect);
                            toremove = item;
                            using (AddTextDialog textDialog = new AddTextDialog())
                            {
                                textDialog.DialogData = new AddTextDialogData
                                {
                                    FontSize = (int)item.Font.Size, Text = item.Text, TextAlignment = item.Alignment
                                };
                                textDialog.ShowDialog(this);
                                if (textDialog.DialogResult == DialogResult.OK)
                                {
                                    result      = textDialog.DialogResult;
                                    TextContext = textDialog.DialogData;
                                    Font fn = new Font("Arial", TextContext.FontSize, FontStyle.Bold);
                                    switch (TextContext.TextAlignment)
                                    {
                                    //when text is changed it is a little of off center
                                    case StringAlignment.Center:
                                        var stringMeasuresC = (g.MeasureString(toremove.Text, fn));
                                        //could be better
                                        toadd = new StringGraphics {
                                            Font = fn, Text = TextContext.Text, Position = new Point(stringRect.X + (int)stringMeasuresC.Width / 2 - BookCover.Position.X, stringRect.Y + stringRect.Height / 2 - (int)(g.MeasureString(TextContext.Text, fn).Height) / 2 - BookCover.Position.Y), Color = currentTextColor, Alignment = TextContext.TextAlignment
                                        };
                                        break;

                                    case StringAlignment.Near:
                                        toadd = new StringGraphics {
                                            Font = fn, Text = TextContext.Text, Position = new Point((stringRect.X + stringRect.Width / 2 - (int)(g.MeasureString(TextContext.Text, fn).Width) / 2) - BookCover.Position.X, stringRect.Y + stringRect.Height / 2 - (int)(g.MeasureString(TextContext.Text, fn).Height) / 2 - BookCover.Position.Y), Color = currentTextColor, Alignment = TextContext.TextAlignment
                                        }; break;

                                    case StringAlignment.Far:

                                        toadd = new StringGraphics
                                        {
                                            Font = fn,
                                            Text = TextContext.Text,

                                            Position = new Point(
                                                stringRect.X + stringRect.Width / 2 + g.MeasureString(TextContext.Text, fn).ToSize().Width / 2 -
                                                BookCover.Position.X, stringRect.Y + stringRect.Height / 2 - (int)(g.MeasureString(TextContext.Text, fn).Height) / 2 - BookCover.Position.Y),
                                            Color     = currentTextColor,
                                            Alignment = TextContext.TextAlignment
                                        };
                                        break;
                                    }
                                    //BookCover.TextList.Remove(item);
                                }
                            }
                        }
                    }
                }

                if (result == DialogResult.OK)
                {
                    BookCover.TextList.Remove(toremove);
                    BookCover.TextList.Add(toadd);
                    if (ContextRectangle != Rectangle.Empty)
                    {
                        ContextRectangle = GetStringRectangle(toadd);
                        toModify         = toadd;
                    }

                    pictureBox.Refresh();
                }
            }
        }