/// <summary> /// ''' マウスボタンアップ /// ''' </summary> /// ''' <param name="sender"></param> /// ''' <param name="e"></param> /// ''' <remarks></remarks> private void PanelPaint_MouseUp(System.Object sender, System.Windows.Forms.MouseEventArgs e) { // if (e.Button == MouseButtons.Left) { // ドラッグ終了 if (isPainting) { isDragging = false; endPoint.X = e.X; endPoint.Y = e.Y; } //文字入力終了 if (isInputtingText) { if (checkBoxBrush.Checked) { textBrush = paintBrush; } else { textBrush = new SolidBrush(TransparentColor); } if (checkBoxLine.Checked) { textPen = paintPen; } else { textPen = new Pen(TransparentColor, 1); } ClsFigure gText = new ClsGText(textPen, textBrush, paintTextFont, paintTextColor, inputTextBox.Left, inputTextBox.Top, inputTextBox.Width, inputTextBox.Height, inputTextBox.Text); inputTextBox.Dispose(); isPainting = false; isInputtingText = false; figList.Add(gText); reFigList.Clear(); PanelPaint.Refresh(); lastFigure = gText.castClassFigure(); } // パーツ確定 if (isPaintingRectangle) { int leftTopX = startPoint.X > endPoint.X ? endPoint.X : startPoint.X; int leftTopY = startPoint.Y > endPoint.Y ? endPoint.Y : startPoint.Y; ClsFigure rect = new ClsRectangle(paintPen, paintBrush, leftTopX, leftTopY, Math.Abs(endPoint.X - startPoint.X), Math.Abs(endPoint.Y - startPoint.Y)); figList.Add(rect); reFigList.Clear(); PanelPaint.Refresh(); lastFigure = rect.castClassFigure(); } else if (isPaintingEllipse) { int leftTopX = startPoint.X > endPoint.X ? endPoint.X : startPoint.X; int leftTopY = startPoint.Y > endPoint.Y ? endPoint.Y : startPoint.Y; ClsFigure elps = new ClsEllipse(paintPen, paintBrush, leftTopX, leftTopY, Math.Abs(endPoint.X - startPoint.X), Math.Abs(endPoint.Y - startPoint.Y)); figList.Add(elps); reFigList.Clear(); PanelPaint.Refresh(); lastFigure = elps.castClassFigure(); } else if (isPaintingLine) { ClsFigure line = new ClsLine(paintPen, startPoint.X, startPoint.Y, endPoint.X, endPoint.Y); figList.Add(line); reFigList.Clear(); PanelPaint.Refresh(); lastFigure = line.castClassFigure(); } else if (isPaintingArrow) { ClsFigure arrow = new ClsArrow(paintPen, startPoint.X, startPoint.Y, endPoint.X, endPoint.Y); figList.Add(arrow); reFigList.Clear(); PanelPaint.Refresh(); lastFigure = arrow.castClassFigure(); } else if (isPaintingText) { //入力用リッチテキストボックスの設定 inputTextBox = new AlphaControls.AlphaRichTextBox(); if (checkBoxBrush.Checked && brushColor.A > 0) { inputTextBox.BackAlpha = brushColor.A; inputTextBox.BackColor = Color.FromArgb(brushColor.R, brushColor.G, brushColor.B); } else { inputTextBox.BackAlpha = 0; inputTextBox.BackColor = Color.White; } inputTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; inputTextBox.Font = paintTextFont; inputTextBox.ForeColor = paintTextColor; inputTextBox.Location = new System.Drawing.Point(startPoint.X, startPoint.Y); inputTextBox.Multiline = true; inputTextBox.Name = "inputTextBox"; int width = (endPoint.X != startPoint.X) ? (int)Math.Abs(endPoint.X - startPoint.X) : 320; inputTextBox.Size = new System.Drawing.Size( width, (int)(TextRenderer.MeasureText("あ", paintTextFont).Height + inputTextBox.Margin.Vertical)); inputTextBox.TabIndex = 0; inputTextBox.ImeMode = ImeMode.Off; inputTextBox.TextChanged += new EventHandler(inputTextBox_TextChanged); ControlsTransparent(inputTextBox, PanelPaint); //強制的にフォーカス inputTextBox.Focus(); isPaintingText = false; isInputtingText = true; } else if (isPaintingFreehand) { ClsFigure freehand = new ClsFreehand(paintPen, freeHandX, freeHandY); figList.Add(freehand); reFigList.Clear(); PanelPaint.Refresh(); lastFigure = freehand.castClassFigure(); } } }
/// <summary> /// 描画 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void PanelPaint_Paint(System.Object sender, System.Windows.Forms.PaintEventArgs e) { // パーツ描画 for (int i = 0; i <= figList.Count - 1; i++) { figList[i].Draw(e.Graphics); } // ドラッグ中は長方形描画 if (isDragging) { if (!isPaintingFreehand) { // 範囲の描画 // | e.Graphics.DrawLine(blacDotPen, startPoint.X, startPoint.Y, startPoint.X, nowPoint.Y); // | e.Graphics.DrawLine(blacDotPen, nowPoint.X, startPoint.Y, nowPoint.X, nowPoint.Y); //  ̄ e.Graphics.DrawLine(blacDotPen, startPoint.X, startPoint.Y, nowPoint.X, startPoint.Y); // _ e.Graphics.DrawLine(blacDotPen, startPoint.X, nowPoint.Y, nowPoint.X, nowPoint.Y); } // 仮描画 if (isPaintingRectangle) { int leftTopX = startPoint.X > nowPoint.X ? nowPoint.X : startPoint.X; int leftTopY = startPoint.Y > nowPoint.Y ? nowPoint.Y : startPoint.Y; ClsRectangle rect = new ClsRectangle(paintPen, paintBrush, leftTopX, leftTopY, Math.Abs(nowPoint.X - startPoint.X), Math.Abs(nowPoint.Y - startPoint.Y)); rect.Draw(e.Graphics); } else if (isPaintingEllipse) { int leftTopX = startPoint.X > nowPoint.X ? nowPoint.X : startPoint.X; int leftTopY = startPoint.Y > nowPoint.Y ? nowPoint.Y : startPoint.Y; ClsEllipse elps = new ClsEllipse(paintPen, paintBrush, leftTopX, leftTopY, Math.Abs(nowPoint.X - startPoint.X), Math.Abs(nowPoint.Y - startPoint.Y)); elps.Draw(e.Graphics); } else if (isPaintingLine) { ClsFigure line = new ClsLine(paintPen, startPoint.X, startPoint.Y, nowPoint.X, nowPoint.Y); line.Draw(e.Graphics); } else if (isPaintingArrow) { ClsFigure arrow = new ClsArrow(paintPen, startPoint.X, startPoint.Y, nowPoint.X, nowPoint.Y); arrow.Draw(e.Graphics); } else if (isPaintingFreehand) { ClsFigure freehand = new ClsFreehand(paintPen, freeHandX, freeHandY); freehand.Draw(e.Graphics); } } }