private
void
DoAddDataArray(Point[] arrPoints)
{
this
.Dispatcher.Invoke(DispatcherPriority.Normal,
new
Action(() =>
{
double
dPixelWidth = Pixel;
double
dContainerWidth =
this
.VbxContainer.ActualWidth;
double
dContainerHeight =
this
.VbxContainer.ActualHeight;
double
dPixelHeight = Pixel/2d;
double
dCellHeight = 1;
double
dCellWidth = 1;
DrawingVisual drawingVisual =
new
DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
drawingContext.DrawRectangle(
new
SolidColorBrush(Colors.Blue),
new
Pen(),
new
Rect(0, 0, dPixelWidth, dCellHeight));
for
(
int
i = 0; i < arrPoints.Length; i++)
{
double
dCellX = Math.Round(((arrPoints[i].X - MinAxisX) / (MaxAxisX - MinAxisX)) * Pixel);
double
dY = arrPoints[i].Y;
Color oColor =
this
.GetColor(dY);
LinearGradientBrush lineBrush =
new
LinearGradientBrush();
lineBrush.GradientStops.Add(
new
GradientStop(Colors.Transparent, 0));
lineBrush.GradientStops.Add(
new
GradientStop(oColor, 0.25));
lineBrush.GradientStops.Add(
new
GradientStop(oColor, 0.5));
lineBrush.GradientStops.Add(
new
GradientStop(oColor, 0.75));
lineBrush.GradientStops.Add(
new
GradientStop(Colors.Transparent, 1));
drawingContext.DrawRectangle(lineBrush,
new
Pen(),
new
Rect(dCellX-1, 0, dCellWidth + 2, dCellHeight));
}
if
(
this
.PreviousBitmap !=
null
)
drawingContext.DrawImage(
this
.PreviousBitmap,
new
Rect(0, dCellHeight, dPixelWidth, dPixelHeight));
drawingContext.Close();
RenderTargetBitmap rtbCurrent =
new
RenderTargetBitmap((
int
)dPixelWidth,
(
int
)dPixelHeight, 96, 96, PixelFormats.Pbgra32);
rtbCurrent.Render(drawingVisual);
this
.PreviousBitmap = rtbCurrent;
this
.ImgMain.Source = rtbCurrent;
}));
}