delphiex8canvas应用
来源:互联网 发布:小米平板刷windows包 编辑:程序博客网 时间:2024/06/04 00:31
procedure TFrmMain.DrawLine(Sender: Tobject);
var
kpjg, spjg, zgjg, zdjg: Integer;
var
x1, x2, y1, y2, x3, y3, x4, y4: Single;
var
Kheight: Single;
I: Integer;
var
TempString, OutStr: string;
var
TempLen, StrLen: Integer;
var
ARect: TRectF;
begin
PaintBoxMain.Canvas.BeginScene;
if DayCount > 0 then
begin
PaintWidth := PaintBoxMain.Width;
PaintHeight := PaintBoxMain.Height;
Canvas.Fill.Color := TAlphaColorRec.Black;
PaintBoxMain.Canvas.SetMatrix(PaintBoxMain.AbsoluteMatrix);
ARect := TRectF.Create(PaintBoxMain.Position.X, PaintBoxMain.Position.Y, PaintBoxMain.Position.X + PaintWidth, PaintBoxMain.Position.X + PaintHeight);
Canvas.FillRect(ARect, 1, 1, AllCorners, 1);
//左边竖直线
Canvas.Stroke.Color := TAlphaColorRec.Red;
Canvas.DrawLine(TPointF.Create(LeftX - 1, 0), TPointF.Create(LeftX - 1, PaintHeight), 1);
//上边水平线
Canvas.DrawLine(TPointF.Create(0, TopY), TPointF.Create(PaintWidth, TopY), 1);
//右边竖直线
Canvas.DrawLine(TPointF.Create(PaintWidth - RightX, TopY), TPointF.Create(PaintWidth - RightX, PaintHeight), 1);
//下边水平线
Canvas.DrawLine(TPointF.Create(0, PaintHeight - BottomY), TPointF.Create(PaintWidth - RightX, PaintHeight - BottomY), 1);
// Sleep(1000);
PageTopY := PaintHeight - BottomY;
Canvas.Stroke.Kind := TBrushKind.Solid;
Canvas.Stroke.Dash := TStrokeDash.Dash;
Canvas.Stroke.Color := TAlphaColorRec.Maroon;
Canvas.DrawLine(TPointF.Create(LeftX - 1,Round(PageTopY / 3)), TPointF.Create(PaintWidth - RightX,Round(PageTopY/3)), 1);
Canvas.DrawLine(TPointF.Create(LeftX - 1,Round(2 * PageTopY / 3)), TPointF.Create(PaintWidth - RightX,Round(2 * PageTopY / 3)), 1);
Canvas.Stroke.Kind := TBrushKind.Solid;
//求价格的最大、最小值
Maxjg := DayData[2][LeftDate];
MinJg := DayData[3][LeftDate];
I := LeftDate;
while (I < RightDate) or (I = RightDate) do
begin
if DayData[2][I] > MaxJg then
MaxJg := DayData[2][I];
if DayData[3][I] < MinJg then
MinJg := DayData[3][I];
I := I + 1;
end;
//画右侧成交价格坐标数值
OutStr := '.';
PaintBoxMain.Canvas.Fill.Color := TAlphaColorRec.Red;
Canvas.Font.Size := 11;
Canvas.Font.Family := '宋体';
TempString := IntToStr(Round(MinJg + (MaxJg - MinJg) * 2 / 3));
TempLen := Length(TempString);
Insert(OutStr, TempString, TempLen - 2);
StrLen := Length(TempString);
if TempString[StrLen] = '0' then
TempString[StrLen] := ' ';
ARect := TRectF.Create(PaintWidth - RightX + 2, Round(PageTopY / 3) - 9, PaintWidth - RightX + 100, Round(PageTopY / 3) +100);
PaintBoxMain.Canvas.FillText(ARect, TempString, True, 1, [], TTextAlign.taLeading, TTextAlign.Leading);
TempString := IntToStr(Round(MinJg + (MaxJg - MinJg) / 3));
TempLen := Length(TempString);
Insert(OutStr, TempString, TempLen - 2);
StrLen := Length(TempString);
if TempString[StrLen] = '0' then
TempString[StrLen] := ' ';
ARect := TRectF.Create(PaintWidth - RightX + 2, Round(PageTopY * 2 / 3) - 9, PaintWidth - RightX + 100, Round(PageTopY * 2/ 3) +100);
PaintBoxMain.Canvas.FillText(ARect, TempString, True, 1, [], TTextAlign.taLeading, TTextAlign.taLeading);
//画K线图
Kheight := PageTopY - TopY - 10;
HeightXiShu := (MaxJg - MinJg) / Kheight;
x1 := LeftX - DefaultWidth;
I := LeftDate;
while (I < RightDate) or (I = RightDate) do
begin
kpjg := DayData[1][I];
spjg := DayData[4][I];
zgjg := DayData[2][I];
zdjg := DayData[3][I];
x1 := x1 + DefaultWidth;
x2 := x1 + DefaultWidth - 1;
x3 := Round((x1 + x2) / 2);
x4 := x3;
if spjg < kpjg then
begin
Canvas.Stroke.Color := TAlphaColorRec.Aqua;
Canvas.Stroke.Kind := TBrushKind.Solid;
Canvas.Stroke.Dash := TStrokeDash.Solid;
Canvas.Fill.Color := TAlphaColorRec.Aqua;
Canvas.Fill.Kind := TBrushKind.Solid;
y3 := PageTopY - Round((zgjg - MinJg) / HeightXiShu) - 2;
y1 := PageTopY - Round((kpjg - MinJg) / HeightXiShu) - 2;
y2 := PageTopY - Round((spjg - MinJg) / HeightXiShu) - 2;
y4 := PageTopY - Round((zdjg - MinJg) / HeightXiShu) - 2;
if (y1 = y2) then
y2 := y2 + 1;
if (zgjg = kpjg) then
y3 := y1;
if (zdjg = spjg) then
y4 := y2;
if (zgjg <> kpjg) and (y1 = y3) then
y3 := y3 - 1;
if (zdjg <> spjg) and (y2 = y4) then
y4 := y4 + 1;
Canvas.DrawLine(TPointF.Create(x3, y3), TPointF.Create(x3, y1), 1);
Canvas.FillRect(TRectF.Create(x1, y1, x2, y2),0,0, AllCorners, 1);
Canvas.DrawLine(TPointF.Create(x4, y2), TPointF.Create(x4, y4), 1);
// Sleep(1000);
Canvas.FillRect(TRectF.Create(x1, y1, x2, y2), 0, 0, AllCorners, 1);
Canvas.DrawLine(TPointF.Create(x4, y2), TPointF.Create(x4, y4), 1);
end//收盘价小于开盘价,阴线
else
begin
Canvas.Stroke.Color := TAlphaColorRec.red;
Canvas.Stroke.Kind := TBrushKind.Solid;
Canvas.Stroke.Dash := TStrokeDash.Solid;
x2 := x2 - 1;
y3 := PageTopY - Round((zgjg - MinJg) / HeightXiShu) - 2;
y1 := PageTopY - Round((spjg - MinJg) / HeightXiShu) - 2;
y2 := PageTopY - Round((kpjg - MinJg) / HeightXiShu) - 2;
y4 := PageTopY - Round((zdjg - MinJg) / HeightXiShu) - 2;
if (y1 = y2) and (spjg <> kpjg) then
y2 := y2 + 1;
if (zdjg = kpjg) then
y4 := y2;
if (zgjg = spjg) then
y3 := y1;
if (zdjg <> kpjg) and (y2 = y4) then
y4 := y4 + 1;
if (zgjg <> spjg) and (y1 = y3) then
y3 := y3 - 1;
Canvas.DrawLine(TPointF.Create(x3, y3), TPointF.Create(x3, y1), 1);
Canvas.DrawLine(TPointF.Create(x1, y1), TPointF.Create(x2, y1), 1);
Canvas.DrawLine(TPointF.Create(x2, y1), TPointF.Create(x2, y2), 1);
Canvas.DrawLine(TPointF.Create(x2, y2), TPointF.Create(x1, y2), 1);
Canvas.DrawLine(TPointF.Create(x1, y2), TPointF.Create(x2, y2), 1);
Canvas.DrawLine(TPointF.Create(x2, y2), TPointF.Create(x1, y2), 1);
Canvas.DrawLine(TPointF.Create(x1, y2), TPointF.Create(x1, y1), 1);
Canvas.DrawLine(TPointF.Create(x4, y2), TPointF.Create(x4, y4), 1);
end; //收盘价大于开盘价,阳线
I := I + 1;
end; //画K线图
Canvas.Fill.Color := TAlphaColorRec.Red;
Canvas.Font.Size := 11;
Canvas.Font.Family := '宋体';
//输出证券名称
TempString := ZqjcData[ZqRecordNo];
Canvas.FillText(TRectF.Create(1,1,101,101), TempString, True, 1, [], TTextAlign.taCenter, TTextAlign.taLeading);
//输出基本信息
TempString := '代码 ';
TempString := TempString + ZqdmData[ZqRecordNo] + ' ';
TempString := TempString + '流通股本';
TempString := TempString + IntToStr(ZqltgbData[ZqRecordNo]) + ' ';
Canvas.FillText(TRectF.Create(LeftX + 1, 1,LeftX + 201, 201), TempString, True, 1, [], TTextAlign.taLeading, TTextAlign.taLeading);
end; //数据集中数据个数大于0
PaintBoxMain.Canvas.EndScene;
end;
var
kpjg, spjg, zgjg, zdjg: Integer;
var
x1, x2, y1, y2, x3, y3, x4, y4: Single;
var
Kheight: Single;
I: Integer;
var
TempString, OutStr: string;
var
TempLen, StrLen: Integer;
var
ARect: TRectF;
begin
PaintBoxMain.Canvas.BeginScene;
if DayCount > 0 then
begin
PaintWidth := PaintBoxMain.Width;
PaintHeight := PaintBoxMain.Height;
Canvas.Fill.Color := TAlphaColorRec.Black;
PaintBoxMain.Canvas.SetMatrix(PaintBoxMain.AbsoluteMatrix);
ARect := TRectF.Create(PaintBoxMain.Position.X, PaintBoxMain.Position.Y, PaintBoxMain.Position.X + PaintWidth, PaintBoxMain.Position.X + PaintHeight);
Canvas.FillRect(ARect, 1, 1, AllCorners, 1);
//左边竖直线
Canvas.Stroke.Color := TAlphaColorRec.Red;
Canvas.DrawLine(TPointF.Create(LeftX - 1, 0), TPointF.Create(LeftX - 1, PaintHeight), 1);
//上边水平线
Canvas.DrawLine(TPointF.Create(0, TopY), TPointF.Create(PaintWidth, TopY), 1);
//右边竖直线
Canvas.DrawLine(TPointF.Create(PaintWidth - RightX, TopY), TPointF.Create(PaintWidth - RightX, PaintHeight), 1);
//下边水平线
Canvas.DrawLine(TPointF.Create(0, PaintHeight - BottomY), TPointF.Create(PaintWidth - RightX, PaintHeight - BottomY), 1);
// Sleep(1000);
PageTopY := PaintHeight - BottomY;
Canvas.Stroke.Kind := TBrushKind.Solid;
Canvas.Stroke.Dash := TStrokeDash.Dash;
Canvas.Stroke.Color := TAlphaColorRec.Maroon;
Canvas.DrawLine(TPointF.Create(LeftX - 1,Round(PageTopY / 3)), TPointF.Create(PaintWidth - RightX,Round(PageTopY/3)), 1);
Canvas.DrawLine(TPointF.Create(LeftX - 1,Round(2 * PageTopY / 3)), TPointF.Create(PaintWidth - RightX,Round(2 * PageTopY / 3)), 1);
Canvas.Stroke.Kind := TBrushKind.Solid;
//求价格的最大、最小值
Maxjg := DayData[2][LeftDate];
MinJg := DayData[3][LeftDate];
I := LeftDate;
while (I < RightDate) or (I = RightDate) do
begin
if DayData[2][I] > MaxJg then
MaxJg := DayData[2][I];
if DayData[3][I] < MinJg then
MinJg := DayData[3][I];
I := I + 1;
end;
//画右侧成交价格坐标数值
OutStr := '.';
PaintBoxMain.Canvas.Fill.Color := TAlphaColorRec.Red;
Canvas.Font.Size := 11;
Canvas.Font.Family := '宋体';
TempString := IntToStr(Round(MinJg + (MaxJg - MinJg) * 2 / 3));
TempLen := Length(TempString);
Insert(OutStr, TempString, TempLen - 2);
StrLen := Length(TempString);
if TempString[StrLen] = '0' then
TempString[StrLen] := ' ';
ARect := TRectF.Create(PaintWidth - RightX + 2, Round(PageTopY / 3) - 9, PaintWidth - RightX + 100, Round(PageTopY / 3) +100);
PaintBoxMain.Canvas.FillText(ARect, TempString, True, 1, [], TTextAlign.taLeading, TTextAlign.Leading);
TempString := IntToStr(Round(MinJg + (MaxJg - MinJg) / 3));
TempLen := Length(TempString);
Insert(OutStr, TempString, TempLen - 2);
StrLen := Length(TempString);
if TempString[StrLen] = '0' then
TempString[StrLen] := ' ';
ARect := TRectF.Create(PaintWidth - RightX + 2, Round(PageTopY * 2 / 3) - 9, PaintWidth - RightX + 100, Round(PageTopY * 2/ 3) +100);
PaintBoxMain.Canvas.FillText(ARect, TempString, True, 1, [], TTextAlign.taLeading, TTextAlign.taLeading);
//画K线图
Kheight := PageTopY - TopY - 10;
HeightXiShu := (MaxJg - MinJg) / Kheight;
x1 := LeftX - DefaultWidth;
I := LeftDate;
while (I < RightDate) or (I = RightDate) do
begin
kpjg := DayData[1][I];
spjg := DayData[4][I];
zgjg := DayData[2][I];
zdjg := DayData[3][I];
x1 := x1 + DefaultWidth;
x2 := x1 + DefaultWidth - 1;
x3 := Round((x1 + x2) / 2);
x4 := x3;
if spjg < kpjg then
begin
Canvas.Stroke.Color := TAlphaColorRec.Aqua;
Canvas.Stroke.Kind := TBrushKind.Solid;
Canvas.Stroke.Dash := TStrokeDash.Solid;
Canvas.Fill.Color := TAlphaColorRec.Aqua;
Canvas.Fill.Kind := TBrushKind.Solid;
y3 := PageTopY - Round((zgjg - MinJg) / HeightXiShu) - 2;
y1 := PageTopY - Round((kpjg - MinJg) / HeightXiShu) - 2;
y2 := PageTopY - Round((spjg - MinJg) / HeightXiShu) - 2;
y4 := PageTopY - Round((zdjg - MinJg) / HeightXiShu) - 2;
if (y1 = y2) then
y2 := y2 + 1;
if (zgjg = kpjg) then
y3 := y1;
if (zdjg = spjg) then
y4 := y2;
if (zgjg <> kpjg) and (y1 = y3) then
y3 := y3 - 1;
if (zdjg <> spjg) and (y2 = y4) then
y4 := y4 + 1;
Canvas.DrawLine(TPointF.Create(x3, y3), TPointF.Create(x3, y1), 1);
Canvas.FillRect(TRectF.Create(x1, y1, x2, y2),0,0, AllCorners, 1);
Canvas.DrawLine(TPointF.Create(x4, y2), TPointF.Create(x4, y4), 1);
// Sleep(1000);
Canvas.FillRect(TRectF.Create(x1, y1, x2, y2), 0, 0, AllCorners, 1);
Canvas.DrawLine(TPointF.Create(x4, y2), TPointF.Create(x4, y4), 1);
end//收盘价小于开盘价,阴线
else
begin
Canvas.Stroke.Color := TAlphaColorRec.red;
Canvas.Stroke.Kind := TBrushKind.Solid;
Canvas.Stroke.Dash := TStrokeDash.Solid;
x2 := x2 - 1;
y3 := PageTopY - Round((zgjg - MinJg) / HeightXiShu) - 2;
y1 := PageTopY - Round((spjg - MinJg) / HeightXiShu) - 2;
y2 := PageTopY - Round((kpjg - MinJg) / HeightXiShu) - 2;
y4 := PageTopY - Round((zdjg - MinJg) / HeightXiShu) - 2;
if (y1 = y2) and (spjg <> kpjg) then
y2 := y2 + 1;
if (zdjg = kpjg) then
y4 := y2;
if (zgjg = spjg) then
y3 := y1;
if (zdjg <> kpjg) and (y2 = y4) then
y4 := y4 + 1;
if (zgjg <> spjg) and (y1 = y3) then
y3 := y3 - 1;
Canvas.DrawLine(TPointF.Create(x3, y3), TPointF.Create(x3, y1), 1);
Canvas.DrawLine(TPointF.Create(x1, y1), TPointF.Create(x2, y1), 1);
Canvas.DrawLine(TPointF.Create(x2, y1), TPointF.Create(x2, y2), 1);
Canvas.DrawLine(TPointF.Create(x2, y2), TPointF.Create(x1, y2), 1);
Canvas.DrawLine(TPointF.Create(x1, y2), TPointF.Create(x2, y2), 1);
Canvas.DrawLine(TPointF.Create(x2, y2), TPointF.Create(x1, y2), 1);
Canvas.DrawLine(TPointF.Create(x1, y2), TPointF.Create(x1, y1), 1);
Canvas.DrawLine(TPointF.Create(x4, y2), TPointF.Create(x4, y4), 1);
end; //收盘价大于开盘价,阳线
I := I + 1;
end; //画K线图
Canvas.Fill.Color := TAlphaColorRec.Red;
Canvas.Font.Size := 11;
Canvas.Font.Family := '宋体';
//输出证券名称
TempString := ZqjcData[ZqRecordNo];
Canvas.FillText(TRectF.Create(1,1,101,101), TempString, True, 1, [], TTextAlign.taCenter, TTextAlign.taLeading);
//输出基本信息
TempString := '代码 ';
TempString := TempString + ZqdmData[ZqRecordNo] + ' ';
TempString := TempString + '流通股本';
TempString := TempString + IntToStr(ZqltgbData[ZqRecordNo]) + ' ';
Canvas.FillText(TRectF.Create(LeftX + 1, 1,LeftX + 201, 201), TempString, True, 1, [], TTextAlign.taLeading, TTextAlign.taLeading);
end; //数据集中数据个数大于0
PaintBoxMain.Canvas.EndScene;
end;
阅读全文
0 0
- delphiex8canvas应用
- 应用
- 应用
- 应用
- 应用
- 应用
- 应用
- 应用
- 网站应用/ 项目应用
- slam应用及应用
- android 应用跳应用
- VML应用
- Ant应用
- 批处理应用
- 应用 Remoting
- 数据压缩 -- 应用
- jstl应用
- Ant应用
- 人机猜拳(顺序:一-->二-->三-->四)
- An overview on domain adaptation in neural machine translation
- 网址
- MYSQl中enum类型
- DateUtil
- delphiex8canvas应用
- Mybatis 传多个参数
- NFS write过程1
- Ubuntu下安装libtorrent
- android studio gradle 下载地址
- 超级画板自动推理功能初探
- POJ2991 线段树 区间更新 计算几何
- java原子性与并发
- java interview