public UnsafeBitmap Darker()
 {
     UnsafeBitmap result = new UnsafeBitmap(bitmapWidth, bitmapHeight);
     result.LockBitmap();
     for (int i = 0; i < bitmapWidth; i++){
         for (int j = 0; j < bitmapHeight; j++){
             PixelData p = GetPixel(i, j);
             result.SetPixel(i, j, Color.FromArgb(Math.Max(0, p.red - 20), Math.Max(0, p.green - 20), Math.Max(0, p.blue - 20)));
         }
     }
     return result;
 }
Exemple #2
0
        public UnsafeBitmap Darker()
        {
            UnsafeBitmap result = new UnsafeBitmap(bitmapWidth, bitmapHeight);

            result.LockBitmap();
            for (int i = 0; i < bitmapWidth; i++)
            {
                for (int j = 0; j < bitmapHeight; j++)
                {
                    PixelData p = GetPixel(i, j);
                    result.SetPixel(i, j, Color.FromArgb(Math.Max(0, p.red - 20), Math.Max(0, p.green - 20), Math.Max(0, p.blue - 20)));
                }
            }
            return(result);
        }
 private void CreateSecondMark(int scrollBarWid)
 {
     int w = scrollBarWid - 1;
     int h = scrollBarWid - 2;
     UnsafeBitmap b = new UnsafeBitmap(w, h);
     b.LockBitmap();
     FormUtil.FillShadedRectangle(b, w, h);
     UnsafeBitmap bh = b.Lighter();
     UnsafeBitmap bp = b.Darker();
     b.UnlockBitmap();
     bh.UnlockBitmap();
     bp.UnlockBitmap();
     secondMark = b.Bitmap;
     secondMark.MakeTransparent();
     secondMarkHighlight = bh.Bitmap;
     secondMarkHighlight.MakeTransparent();
     secondMarkPress = bp.Bitmap;
     secondMarkPress.MakeTransparent();
 }
 private void CreateBar(int scrollBarWid, int width)
 {
     int w = CalcBarSize(width);
     int h = scrollBarWid - 2;
     UnsafeBitmap b = new UnsafeBitmap(w, h);
     b.LockBitmap();
     FormUtil.FillShadedRectangle(b, w, h);
     UnsafeBitmap bh = b.Lighter();
     UnsafeBitmap bp = b.Darker();
     b.UnlockBitmap();
     bh.UnlockBitmap();
     bp.UnlockBitmap();
     bar = b.Bitmap;
     bar.MakeTransparent();
     barHighlight = bh.Bitmap;
     barHighlight.MakeTransparent();
     barPress = bp.Bitmap;
     barPress.MakeTransparent();
 }
 protected void PaintOnGraphicsBitmap(IGraphics g, int width, int height)
 {
     if (backBuffer == null || scatterPlot == null) {
         return;
     }
     UnsafeBitmap copyBackBuffer = new UnsafeBitmap(backBuffer);
     copyBackBuffer.LockBitmap();
     // selected data-points
     foreach (int s in scatterPlot.Selection) {
         double[] w = scatterPlot.GetDataAt(s);
         if (w.Length > 0){
             double x = w[0];
             double y = w[1];
             SymbolProperties gx = GetPointProperties != null ? GetPointProperties(s) : defaultSymbol;
             SymbolType symbolType = SymbolType.allSymbols[gx.Type];
             int symbolSize = gx.Size;
             if (symbolSize > 0){
                 int[] pathX;
                 int[] pathY;
                 symbolType.GetPath(symbolSize, out pathX, out pathY);
                 copyBackBuffer.DrawPath(SelectionColor, ModelToViewX(x, width), ModelToViewY(y, height), pathX, pathY);
             }
         }
     }
     copyBackBuffer.UnlockBitmap();
     // labels
     ScatterPlotLabelMode labelMode = scatterPlot.GetLabelMode();
     bool cutLabels = scatterPlot.CutLabels;
     if (labelMode == ScatterPlotLabelMode.All && scatterPlot.HasLabels) {
         Font font = new Font("Arial", scatterPlot.FontSize, scatterPlot.FontStyle);
         for (;;){
             double[] x;
             double[] y;
             double[] z;
             string[] labels;
             int index;
             try{
                 scatterPlot.GetData(out x, out y, out z, out labels, out index);
             } catch (IndexOutOfRangeException){
                 break;
             }
             if (x == null){
                 break;
             }
             SymbolProperties gx = GetPointProperties != null ? GetPointProperties(index) : defaultSymbol;
             for (int i = 0; i < x.Length; i++){
                 if (labelMode == ScatterPlotLabelMode.All || scatterPlot.IsSelected(i)) {
                     int ix = ModelToViewX(x[i], width);
                     int iy = ModelToViewY(y[i], height);
                     Color c;
                     if (z != null && colorScale != null){
                         c = colorScale.GetColor(z[i]);
                     } else{
                         c = gx.Color;
                     }
                     Brush b = new SolidBrush(c);
                     if (ix >= 0 && iy >= 0 && ix < width && iy < height){
                         if (labels[i] != null){
                             string s = labels[i];
                             if (cutLabels){
                                 if (s.Contains(";")){
                                     s = s.Substring(0, s.IndexOf(';'));
                                 }
                             }
                             copyBackBuffer.DrawString(s, font, b, ix, iy);
                         }
                     }
                 }
             }
         }
         scatterPlot.Reset();
     }
     if (labelMode == ScatterPlotLabelMode.Selected && scatterPlot.HasLabels) {
         Brush br = new SolidBrush(SelectionColor);
         Font font = new Font("Arial", scatterPlot.FontSize, scatterPlot.FontStyle);
         foreach (int s in scatterPlot.Selection) {
             double[] w = scatterPlot.GetDataAt(s);
             string label = scatterPlot.GetLabelAt(s);
             double x = w[0];
             double y = w[1];
             int ix = ModelToViewX(x, width);
             int iy = ModelToViewY(y, height);
             if (ix >= 0 && iy >= 0 && ix < width && iy < height){
                 if (label != null){
                     if (cutLabels){
                         if (label.Contains(";")){
                             label = label.Substring(0, label.IndexOf(';'));
                         }
                     }
                     copyBackBuffer.DrawString(label, font, br, ix, iy);
                 }
             }
         }
     }
     // draw the image
     g.DrawImageUnscaled(copyBackBuffer.Bitmap, 0, 0);
     copyBackBuffer.Dispose();
     g.SmoothingMode = SmoothingMode.AntiAlias;
     DrawPolygons(g, width, height);
     if (drawFunctions != null){
         drawFunctions(g, width, height, ModelToViewX, ModelToViewY, ViewToModelX, ViewToModelY);
     }
     g.SmoothingMode = SmoothingMode.Default;
 }
 protected internal override void OnPaint(IGraphics g, int width, int height)
 {
     if (width <= 0 || height <= 0){
         return;
     }
     if (!Visible){
         return;
     }
     Brush foreBrush = new SolidBrush(ForeColor);
     if (paintBackground && IsInitialized() && !IsDragging()){
         g.DrawString("Loading...", Font, foreBrush, width/2 - 20, height/2 - 10);
     }
     if (scatterPlot == null) {
         return;
     }
     if (width != prevWidth || height != prevHeight){
         InvalidateData();
     }
     prevHeight = height;
     prevWidth = width;
     if (ValuesNeedRecalc()){
         if (!IsDragging()){
             RecalcValues(width, height);
         }
         return;
     }
     if (backBuffer == null){
         lockBackBuffer = true;
         backBuffer = new UnsafeBitmap(width, height);
         backBuffer.LockBitmap();
         PaintOnBackBuffer(width, height);
         backBuffer.UnlockBitmap();
         lockBackBuffer = false;
     }
     vectorGraphics = !(g is CGraphics);
     if (vectorGraphics){
         PaintOnGraphicsVector(g, width, height);
     } else{
         PaintOnGraphicsBitmap(g, width, height);
     }
     if (indicatorX1 != -1 && indicatorX2 != -1 && indicatorY1 != -1 && indicatorY2 != -1){
         g.SmoothingMode = SmoothingMode.AntiAlias;
         Pen indicatorPen = new Pen(Color.Black){DashStyle = DashStyle.Dot};
         switch (MouseMode){
             case ScatterPlotMouseMode.Select:
             case ScatterPlotMouseMode.Zoom:{
                 g.DrawRectangle(indicatorPen, MinIndicatorX, MinIndicatorY, DeltaIndicatorX, DeltaIndicatorY);
             }
                 break;
         }
         g.SmoothingMode = SmoothingMode.Default;
     }
 }