BigLitho/Large.Lito.Database/Make3_Treko3D/ClassLibrary/GradationCurve.cs

104 lines
4.4 KiB
C#

using System;
using System.Drawing;
namespace ClassLibrary
{
public class GradationCurve
{
static int _trekW = 25; // 10 - 50
//double _arc = 10;
static int[] _profileColor;
public int[] ProfileColor
{
get { return _profileColor; }
set { _profileColor = value; }
}
GradationCurve()
{
_profileColor = new int[256] {66, 71, 76, 81, 85, 90, 94, 98, 102, 106, 110, 114, 118, 121, 124, 128, 131, 134, 137, 140,
142, 145, 148, 150, 153, 155, 157, 159, 161, 164, 166, 167, 169, 171, 173, 175, 176, 178, 180, 181, 183, 184, 186, 187, 189, 190, 191, 193, 194, 195,
197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
228, 229, 230, 230, 231, 232, 233, 234, 235, 236, 237, 238, 238, 239, 240, 241, 241, 242, 243, 244, 244, 245, 246, 246, 247, 248, 248, 249, 249, 250,
250, 251, 251, 252, 252, 252, 253, 253, 253, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254,
254, 253, 253, 253, 252, 252, 252, 251, 251, 250, 250, 249, 249, 248, 248, 247, 246, 246, 245, 244, 244, 243, 242, 241, 241, 240, 239, 238, 237, 236,
235, 234, 233, 232, 231, 230, 230, 230, 229, 228, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 211, 210, 209, 208,
207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 195, 194, 193, 191, 190, 189, 187, 186, 184, 183, 181, 180, 178, 176, 175, 173, 171, 169, 167,
166, 164, 161, 159, 157, 155, 153, 150, 148, 145, 142, 140, 137, 134, 131, 128, 124, 121, 118, 114, 110, 106, 102, 98, 94, 90};
}
public static void DrawGradationArc(float x, float y, float Width, float Height, float StAngle, float WAngle, Graphics grBack, int[] profileColor, int trekW)
{
int RGB;
Pen pn;
Color col;
float ncol;
_profileColor = profileColor;
_trekW = trekW;
RectangleF Rect = new RectangleF(x - Width / 2, y - Height / 2, Width, Height);
for (float i = 0; i < _trekW; i += 0.2F)
{
ncol = 254 * i / (float)_trekW;
RGB = _profileColor[Convert.ToInt32(ncol)];
col = Color.FromArgb(255, RGB, RGB, RGB);
//Brush br = Color.FromArgb(255, RGB, RGB, RGB);
//Brush br = new Brushes.White; //SolidBrush(Color.Black);
pn = new Pen(col, 1);
Rect.Width = Width + 2 * i;
Rect.Height = (Width + 2 * i); // / ((float)_arc / 10);
Rect.X = x - Width / 2 - i;
Rect.Y = y - Height / 2 - i; // / (float)(_arc / 10) ;
/*Rect.X = x - i;
Rect.Y = y - i;
Rect.Width = Width + 2 * i;
Rect.Height = Height + 2 * i;*/
grBack.DrawArc(pn, Rect, StAngle, WAngle);
pn.Dispose();
}
}
public static void DrawGradationArc(float x, float y, float Width, float Height, float StAngle, float WAngle, Graphics grBack, int[] profileColor)
{
int RGB;
Pen pn;
Color col;
float ncol;
//_profileColor = profileColor;
//_trekW = trekW;
RectangleF Rect = new RectangleF(x - Width / 2, y - Height / 2, Width, Height);
_profileColor = profileColor;
for (float i = 0; i < _trekW; i += 0.2F)
{
ncol = 254 * i / (float)_trekW;
RGB = _profileColor[Convert.ToInt32(ncol)];
col = Color.FromArgb(255, RGB, RGB, RGB);
//Brush br = Color.FromArgb(255, RGB, RGB, RGB);
//Brush br = new Brushes.White; //SolidBrush(Color.Black);
pn = new Pen(col, 1);
Rect.Width = Width + 2 * i;
Rect.Height = (Width + 2 * i); // / ((float)_arc / 10);
Rect.X = x - Width / 2 - i;
Rect.Y = y - Height / 2 - i; // / (float)(_arc / 10) ;
/*Rect.X = x - i;
Rect.Y = y - i;
Rect.Width = Width + 2 * i;
Rect.Height = Height + 2 * i;*/
grBack.DrawArc(pn, Rect, StAngle, WAngle);
pn.Dispose();
}
}
}
}