public static void PlayPitch(McPitch pitch) { if (pitch.Volume >= 0.001f) { McNotePack parentNotePack = pitch.ParentNotePack; MusicCanvasControl canvas = parentNotePack.Canvas; McMeasure parentMeasure = parentNotePack.ParentMeasure; float num = ((parentMeasure.TemporaryInfo.RelativeX + McNotation.Margin.Left) + McRegularTrack.Margin.Left) - canvas.ScrollXSmooth; float num2 = ((((McRegularTrack.Margin.Bottom + McRegularTrack.Margin.Top) + McMeasure.Height) * parentMeasure.ParentRegularTrack.Index) + McNotation.Margin.Top) + McRegularTrack.Margin.Top; float x = (num + parentNotePack.TemporaryInfo.RelativeXSmooth) + 8f; if (parentNotePack.Staccato) { canvas.PlaySound(parentMeasure.InstrumentType, pitch.AlterantValue, pitch.Volume, (long)parentNotePack.TemporaryInfo.PlayingDurationTimeMs, 0.03f); } else { canvas.PlaySound(parentMeasure.InstrumentType, pitch.AlterantValue, pitch.Volume, (long)parentNotePack.TemporaryInfo.PlayingDurationTimeMs, 0.03f); } int num4 = parentNotePack.IsRest ? (((parentMeasure.ClefType == McMeasure.ClefTypes.L2G) ? 0x2c : 0x17) + 5) : pitch.Value; float measureLineRelativeY = pitch.MeasureLineRelativeY; float num6 = 3.141593f * (((float)num4) / 88f); Color color = parentNotePack.IsRest ? Color.FromArgb(0x80, Color.White) : Color.FromArgb(0xff, (int)(((Math.Cos((double)num6) + 1.0) / 2.0) * 255.0), (int)(((Math.Sin((double)num6) + 1.0) / 2.0) * 255.0), (int)(((Math.Cos((double)num6) + 1.0) / 2.0) * 255.0)); MusicCanvasControl.RippleAniManager.Append(x, num2 + measureLineRelativeY, color, 10 + ((int)(30f * parentNotePack.Volume)), 0.5f, parentNotePack); } }
public static void DrawBitmap(this MusicCanvasControl canvas, SharpDX.Direct2D1.Bitmap bitmap, RawVector2 pos, Size2F?size, float opacity = 1f, BitmapInterpolationMode interpolationMode = 0) { if (!size.HasValue) { size = new Size2F?(bitmap.Size); } canvas.RenderTarget2D.DrawBitmap(bitmap, new RawRectangleF(pos.X, pos.Y, pos.X + size.Value.Width, pos.Y + size.Value.Height), opacity, interpolationMode); }
public static void DrawLine(this MusicCanvasControl canvas, RawVector2 p1, RawVector2 p2, Color color, float strokeWidth) { RenderTarget renderTarget = canvas.RenderTarget2D; SolidColorBrush brush = new SolidColorBrush(renderTarget, color.ToRawColor4(1f)); renderTarget.DrawLine(p1, p2, brush, strokeWidth); brush.Dispose(); }
public static void FillEllipse(this MusicCanvasControl canvas, Ellipse ellipse, Color color) { RenderTarget renderTarget = canvas.RenderTarget2D; SolidColorBrush brush = new SolidColorBrush(renderTarget, color.ToRawColor4(1f)); renderTarget.FillEllipse(ellipse, brush); brush.Dispose(); }
public static void FillRectangle(this MusicCanvasControl canvas, RawRectangleF rectF, Color color) { RenderTarget renderTarget = canvas.RenderTarget2D; SolidColorBrush brush = new SolidColorBrush(renderTarget, color.ToRawColor4(1f)); renderTarget.FillRectangle(rectF, brush); brush.Dispose(); }
public static void DrawEllipse(this MusicCanvasControl canvas, Ellipse ellipse, Color color, float strokeWidth) { RenderTarget renderTarget = canvas.RenderTarget2D; SolidColorBrush brush = new SolidColorBrush(renderTarget, color.ToRawColor4(1f)); renderTarget.DrawEllipse(ellipse, brush, strokeWidth); brush.Dispose(); }
public static void DrawSimpleTip(this MusicCanvasControl canvas, string text, RawVector2?pos = new RawVector2?()) { if (MusicCanvasControl.EnableControlTip && canvas.IsAltKeyPressed()) { Trimming trimming; InlineObject obj2; if (!pos.HasValue) { Point point = canvas.PointToClient(Control.MousePosition); pos = new RawVector2((float)(point.X + 0x18), (float)(point.Y - 0x18)); } RenderTarget renderTarget = canvas.RenderTarget2D; SharpDX.DirectWrite.Factory factoryDWrite = canvas.FactoryDWrite; TextFormat textFormat = new TextFormat(factoryDWrite, "微软雅黑", FontWeight.Bold, SharpDX.DirectWrite.FontStyle.Normal, FontStretch.Normal, 12f); textFormat.GetTrimming(out trimming, out obj2); trimming.Granularity = TrimmingGranularity.Word; textFormat.SetTrimming(trimming, obj2); textFormat.TextAlignment = TextAlignment.Center; textFormat.ParagraphAlignment = ParagraphAlignment.Center; TextLayout layout = new TextLayout(factoryDWrite, text, textFormat, 1920f, 1080f); textFormat.TextAlignment = TextAlignment.Leading; textFormat.ParagraphAlignment = ParagraphAlignment.Far; TextLayout textLayout = new TextLayout(factoryDWrite, text, textFormat, layout.Metrics.Width, layout.Metrics.Height); layout.Dispose(); RawVector2 origin = new RawVector2(pos.Value.X, pos.Value.Y); switch (textFormat.TextAlignment) { case TextAlignment.Trailing: origin.X = pos.Value.X - textLayout.Metrics.Width; break; case TextAlignment.Center: case TextAlignment.Justified: origin.X = pos.Value.X - (textLayout.Metrics.Width / 2f); break; } switch (textFormat.ParagraphAlignment) { case ParagraphAlignment.Far: origin.Y = pos.Value.Y - textLayout.Metrics.Height; break; case ParagraphAlignment.Center: origin.Y = pos.Value.Y - (textLayout.Metrics.Height / 2f); break; } origin.X += 4f; origin.Y += 4f; textFormat.Dispose(); RawRectangleF rectF = new RawRectangleF(pos.Value.X, pos.Value.Y - textLayout.Metrics.Height, (pos.Value.X + textLayout.Metrics.Width) + 8f, pos.Value.Y + 8f); canvas.FillRoundedRectangle(rectF, 4f, Color.FromArgb(150, 0x1f, 0x1f, 0x22)); canvas.DrawRoundedRectangle(rectF, 4f, Color.FromArgb(150, 0xe9, 0xe9, 0xe9), 2f); SolidColorBrush defaultForegroundBrush = new SolidColorBrush(renderTarget, Color.FromArgb(250, Color.DarkGray).ToRawColor4(1f)); renderTarget.DrawTextLayout(origin, textLayout, defaultForegroundBrush, DrawTextOptions.Clip); defaultForegroundBrush.Dispose(); textLayout.Dispose(); } }
public McNotation(MusicCanvasControl canvas) { this._canvas = canvas; this.TemporaryInfo = new NtTemporaryInfo(this); for (int i = 0; i < 3; i++) { this._regularTrackList.Add(new McRegularTrack(this)); } }
public static void FillCircle(this MusicCanvasControl canvas, RawVector2 pos, float radius, Color color) { RenderTarget renderTarget = canvas.RenderTarget2D; SolidColorBrush brush = new SolidColorBrush(renderTarget, color.ToRawColor4(1f)); Ellipse ellipse = new Ellipse(new RawVector2(pos.X, pos.Y), radius, radius); renderTarget.FillEllipse(ellipse, brush); brush.Dispose(); }
public static void DrawBezierLine(this MusicCanvasControl canvas, RawVector2 pStart, RawVector2 pEnd, float heightDiff, float mpRatio, Color color, float strokeWidth, StrokeStyle strokeStyle, bool disposeStrokeStyle = true) { mpRatio = mpRatio.Clamp(0f, 1f); float num = pEnd.X - pStart.X; float num2 = pEnd.Y - pStart.Y; RawVector2 vector = new RawVector2(pStart.X + (num * mpRatio), (pStart.Y + (num2 * mpRatio)) + heightDiff); RawVector2 vector2 = new RawVector2(pStart.X + (num * (1f - mpRatio)), (pStart.Y + (num2 * (1f - mpRatio))) + heightDiff); canvas.DrawBezierLine(pStart, vector, vector2, pEnd, color, strokeWidth, strokeStyle, disposeStrokeStyle); }
public static void DrawLine(this MusicCanvasControl canvas, RawVector2 p1, RawVector2 p2, Color color, float strokeWidth, StrokeStyle strokeStyle, bool disposeStrokeStyle = true) { RenderTarget renderTarget = canvas.RenderTarget2D; SolidColorBrush brush = new SolidColorBrush(renderTarget, color.ToRawColor4(1f)); renderTarget.DrawLine(p1, p2, brush, strokeWidth, strokeStyle); brush.Dispose(); if (disposeStrokeStyle && (strokeStyle != null)) { strokeStyle.Dispose(); } }
public static void FillRoundedRectangle(this MusicCanvasControl canvas, RawRectangleF rectF, float radius, Color color) { RenderTarget renderTarget = canvas.RenderTarget2D; SolidColorBrush brush = new SolidColorBrush(renderTarget, color.ToRawColor4(1f)); RoundedRectangle roundedRect = new RoundedRectangle { Rect = rectF, RadiusX = radius, RadiusY = radius }; renderTarget.FillRoundedRectangle(roundedRect, brush); brush.Dispose(); }
public static void DrawTextLayout(this MusicCanvasControl canvas, string text, RawVector2 pos, string fontFamilyName, float fontSize, Color color, TextAlignment textAlignment, ParagraphAlignment paragraphAlignment, SharpDX.DirectWrite.FontStyle fontStyle = 0, FontWeight fontWeight = 700) { Trimming trimming; InlineObject obj2; RenderTarget renderTarget = canvas.RenderTarget2D; SharpDX.DirectWrite.Factory factoryDWrite = canvas.FactoryDWrite; TextFormat textFormat = new TextFormat(factoryDWrite, fontFamilyName, fontWeight, fontStyle, FontStretch.Normal, fontSize); textFormat.GetTrimming(out trimming, out obj2); trimming.Granularity = TrimmingGranularity.Word; textFormat.SetTrimming(trimming, obj2); textFormat.TextAlignment = TextAlignment.Center; textFormat.ParagraphAlignment = ParagraphAlignment.Center; TextLayout layout = new TextLayout(factoryDWrite, text, textFormat, 1920f, 1080f); textFormat.TextAlignment = textAlignment; textFormat.ParagraphAlignment = paragraphAlignment; TextLayout textLayout = new TextLayout(factoryDWrite, text, textFormat, layout.Metrics.Width, layout.Metrics.Height); layout.Dispose(); textFormat.Dispose(); switch (textAlignment) { case TextAlignment.Trailing: pos.X -= textLayout.Metrics.Width; break; case TextAlignment.Center: case TextAlignment.Justified: pos.X -= textLayout.Metrics.Width / 2f; break; } switch (paragraphAlignment) { case ParagraphAlignment.Far: pos.Y -= textLayout.Metrics.Height; break; case ParagraphAlignment.Center: pos.Y -= textLayout.Metrics.Height / 2f; break; } SolidColorBrush defaultForegroundBrush = new SolidColorBrush(renderTarget, color.ToRawColor4(1f)); renderTarget.DrawTextLayout(pos, textLayout, defaultForegroundBrush, DrawTextOptions.Clip); defaultForegroundBrush.Dispose(); textLayout.Dispose(); }
public static void DrawRoundedRectangle(this MusicCanvasControl canvas, RawRectangleF rectF, float radius, Color color, float strokeWidth, StrokeStyle strokeStyle, bool disposeStrokeStyle = true) { RenderTarget renderTarget = canvas.RenderTarget2D; SolidColorBrush brush = new SolidColorBrush(renderTarget, color.ToRawColor4(1f)); RoundedRectangle roundedRect = new RoundedRectangle { Rect = rectF, RadiusX = radius, RadiusY = radius }; renderTarget.DrawRoundedRectangle(roundedRect, brush, strokeWidth, strokeStyle); brush.Dispose(); if (disposeStrokeStyle && (strokeStyle != null)) { strokeStyle.Dispose(); } }
public static SharpDX.Direct2D1.Bitmap LoadBitmapFromFileName(this MusicCanvasControl canvas, string filename) { if (File.Exists(filename)) { try { System.Drawing.Bitmap bitmap2; RenderTarget renderTarget = canvas.RenderTarget2D; System.Drawing.Bitmap image = new System.Drawing.Bitmap(filename); if (image.PixelFormat != System.Drawing.Imaging.PixelFormat.Format32bppPArgb) { bitmap2 = new System.Drawing.Bitmap(image.Width, image.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb); using (Graphics graphics = Graphics.FromImage(bitmap2)) { graphics.DrawImage(image, 0, 0, image.Width, image.Height); } } else { bitmap2 = image; } BitmapData bitmapdata = bitmap2.LockBits(new Rectangle(0, 0, bitmap2.Width, bitmap2.Height), ImageLockMode.ReadOnly, bitmap2.PixelFormat); int length = bitmapdata.Stride * bitmap2.Height; byte[] destination = new byte[length]; Marshal.Copy(bitmapdata.Scan0, destination, 0, length); bitmap2.UnlockBits(bitmapdata); SharpDX.Direct2D1.PixelFormat pixelFormat = new SharpDX.Direct2D1.PixelFormat(SharpDX.DXGI.Format.B8G8R8A8_UNorm, SharpDX.Direct2D1.AlphaMode.Premultiplied); BitmapProperties bitmapProperties = new BitmapProperties(pixelFormat, bitmap2.HorizontalResolution, bitmap2.VerticalResolution); SharpDX.Direct2D1.Bitmap bitmap3 = new SharpDX.Direct2D1.Bitmap(renderTarget, new Size2(bitmap2.Width, bitmap2.Height), bitmapProperties); bitmap3.CopyFromMemory(destination, bitmapdata.Stride); bitmap2.Dispose(); image.Dispose(); return(bitmap3); } catch (Exception exception) { Console.WriteLine(exception.Message); } } return(null); }
public static void DrawBezierLine(this MusicCanvasControl canvas, RawVector2 pStart, RawVector2 pM1, RawVector2 pM2, RawVector2 pEnd, Color color, float strokeWidth, StrokeStyle strokeStyle, bool disposeStrokeStyle = true) { PointF[] pathPoints; RenderTarget renderTarget = canvas.RenderTarget2D; using (GraphicsPath path = new GraphicsPath()) { path.AddBezier(pStart.X, pStart.Y, pM1.X, pM1.Y, pM2.X, pM2.Y, pEnd.X, pEnd.Y); path.Flatten(); pathPoints = path.PathPoints; path.Dispose(); } PathGeometry geometry = new PathGeometry(renderTarget.Factory); if (pathPoints.Length > 1) { GeometrySink sink = geometry.Open(); sink.SetSegmentFlags(PathSegment.ForceRoundLineJoin); sink.BeginFigure(new RawVector2(pathPoints[0].X, pathPoints[0].Y), FigureBegin.Filled); for (int i = 1; i < pathPoints.Length; i++) { sink.AddLine(new RawVector2(pathPoints[i].X, pathPoints[i].Y)); } sink.EndFigure(FigureEnd.Open); sink.Close(); sink.Dispose(); } SolidColorBrush brush = new SolidColorBrush(renderTarget, color.ToRawColor4(1f)); renderTarget.DrawGeometry(geometry, brush, strokeWidth, strokeStyle); brush.Dispose(); geometry.Dispose(); if (disposeStrokeStyle && (strokeStyle != null)) { strokeStyle.Dispose(); } }
public static bool IsShiftKeyPressed(this MusicCanvasControl canvas) => ((Control.ModifierKeys & Keys.Shift) == Keys.Shift);
public static void DrawBitmap(this MusicCanvasControl canvas, SharpDX.Direct2D1.Bitmap bitmap, RawVector2 pos, float opacity) { canvas.DrawBitmap(bitmap, pos, null, opacity, BitmapInterpolationMode.NearestNeighbor); }
public static bool IsMouseMiddleKeyPressed(this MusicCanvasControl canvas) => ((Control.MouseButtons & MouseButtons.Middle) == MouseButtons.Middle);
public static bool IsMouseRightKeyPressed(this MusicCanvasControl canvas) => ((Control.MouseButtons & MouseButtons.Right) == MouseButtons.Right);
public static bool IsCtrlKeyPressed(this MusicCanvasControl canvas) => ((Control.ModifierKeys & Keys.Control) == Keys.Control);
public static void FillSector(this MusicCanvasControl canvas, RawVector2 pos, float radius, Color color, float angleStart, float angleEnd) { canvas.RenderTarget2D.FillSector(pos, radius, color, angleStart, angleEnd); }
public static void DrawSector(this MusicCanvasControl canvas, RawVector2 pos, float radius, Color color, float angleStart, float angleEnd, float strokeWidth = 1f, bool arc = false) { canvas.RenderTarget2D.DrawSector(pos, radius, color, angleStart, angleEnd, strokeWidth, arc); }
public static void DrawBezierLine(this MusicCanvasControl canvas, RawVector2 pStart, RawVector2 pEnd, float heightDiff, float mpRatio, Color color) { canvas.DrawBezierLine(pStart, pEnd, heightDiff, mpRatio, color, 1f, null, false); }
public static void DrawTextLayout(this MusicCanvasControl canvas, string text, RawVector2 pos, string fontFamilyName, float fontSize, Color color, TextAlignment textAlignment, SharpDX.DirectWrite.FontStyle fontStyle = 0) { canvas.DrawTextLayout(text, pos, fontFamilyName, fontSize, color, textAlignment, ParagraphAlignment.Near, fontStyle, FontWeight.Bold); }