📄 draw.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <stdlib.h>
#include <vcl\Printers.hpp>
#include <math.h>
#include "draw.h"
#include "main.h"
#include "thread.h"
#include "global.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tform_draw *form_draw;
static long offset=0,step=1;
int dd=50;
int flag_txt=1,flag_ofst=0;
int dg1=540;
int bdg1=80,bdg2=330,bdg3=540;
int cpz1=70, cpz2=140,cpz3=290,cpz4=440,cpz5=540;
int ncpz1=120, ncpz2=240,ncpz3=360,ncpz4=480,ncpz5=540;
int stmdg1=270,stmdg2=540;
int stmbdg1=50,stmbdg2=100,stmbdg3=220,stmbdg4=340,stmbdg5=440,stmbdg6=540;
float kjz_bak; // save bd.k_j_z
bool flag_qh=false; //切换
bool flag_tm1=true; //台面1
bool flag_tm2=false; //台面2
bool flag_bt=false; //棒图
int flag_tm=1;
const int C4=108; // (600-60)/5=108
extern TDonThread *donThread;
//---------------------------------------------------------------------------
__fastcall Tform_draw::Tform_draw(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall Tform_draw::draw()
{
int i;
AnsiString str;
// draw zero
Canvas->Pen->Color=clGray;
if(bd.hq_mode==HQ_CPZGZ){
for(int i=0;i<4;i++){
Canvas->MoveTo(0,(i+1)*C4); Canvas->LineTo(800,(i+1)*C4);
}
if(flag_tm==1){
str=IntToStr((int)zero_j1);Canvas->TextOut(10,1*C4-20,str);
str=IntToStr((int)zero_j2);Canvas->TextOut(10,2*C4-20,str);
str=IntToStr((int)zero_z1);Canvas->TextOut(10,3*C4-20,str);
str=IntToStr((int)zero1); Canvas->TextOut(10,4*C4-20,str);
}else{
str=IntToStr((int)zero_j3);Canvas->TextOut(10,1*C4-20,str);
str=IntToStr((int)zero_j4);Canvas->TextOut(10,2*C4-20,str);
str=IntToStr((int)zero_z2);Canvas->TextOut(10,3*C4-20,str);
str=IntToStr((int)zero2); Canvas->TextOut(10,4*C4-20,str);
}
}else if(bd.hq_mode==HQ_2J1Z){
for(int i=0;i<4;i++){
Canvas->MoveTo(0,(i+1)*C4); Canvas->LineTo(800,(i+1)*C4);
}
str=IntToStr((int)zero_j1);Canvas->TextOut(10,1*C4-20,str);
str=IntToStr((int)zero_j2);Canvas->TextOut(10,2*C4-20,str);
str=IntToStr((int)zero_z1);Canvas->TextOut(10,3*C4-20,str);
str=IntToStr((int)zero); Canvas->TextOut(10,4*C4-20,str);
}else if(bd.hq_mode==HQ_NEWBDG){
if(flag_tm1==true){
for(int i=0;i<4;i++){
Canvas->MoveTo(0,(i+1)*C4); Canvas->LineTo(800,(i+1)*C4);
}
str=IntToStr((int)zero_j1);Canvas->TextOut(10,1*C4-20,str);
str=IntToStr((int)zero_j2);Canvas->TextOut(10,2*C4-20,str);
str=IntToStr((int)zero_z1);Canvas->TextOut(10,3*C4-20,str);
str=IntToStr((int)zero1); Canvas->TextOut(10,4*C4-20,str);
}else{
for(int i=0;i<4;i++){
Canvas->MoveTo(0,(i+1)*C4); Canvas->LineTo(800,(i+1)*C4);
}
str=IntToStr((int)zero_j3);Canvas->TextOut(10,1*C4-20,str);
str=IntToStr((int)zero_j4);Canvas->TextOut(10,2*C4-20,str);
str=IntToStr((int)zero_z2);Canvas->TextOut(10,3*C4-20,str);
str=IntToStr((int)zero2); Canvas->TextOut(10,4*C4-20,str);
}
}else if(bd.hq_mode==HQ_CPZ24){
for(int i=1;i<6;i++){
Canvas->MoveTo(0,i*C4); Canvas->LineTo(800,i*C4);
}
if(flag_tm%2!=0){
str=IntToStr((int)zero_j[flag_tm*2-2]);Canvas->TextOut(10,1*C4-20,str);
str=IntToStr((int)zero_j[flag_tm*2]); Canvas->TextOut(10,2*C4-20,str);
}else{
str=IntToStr((int)zero_j[flag_tm*2-3]);Canvas->TextOut(10,1*C4-20,str);
str=IntToStr((int)zero_j[flag_tm*2-1]);Canvas->TextOut(10,2*C4-20,str);
}
str=IntToStr((int)zero_z[flag_tm-1]); Canvas->TextOut(10,3*C4-20,str);
str=IntToStr((int)zero_tm[flag_tm-1]); Canvas->TextOut(10,4*C4-20,str);
// 1,2,3,4为一组,5,6,7,8为另一组
if(flag_tm<=4)
str=IntToStr((int)(zero_tm[0]+zero_tm[1]+zero_tm[2]+zero_tm[3])/4);
else
str=IntToStr((int)(zero_tm[4]+zero_tm[5]+zero_tm[6]+zero_tm[7])/4);
Canvas->TextOut(10,5*C4-20,str);
}else if(bd.hq_mode==HQ_NEWCPZ){
Canvas->MoveTo(0,ncpz1); Canvas->LineTo(800,ncpz1);
Canvas->MoveTo(0,ncpz2); Canvas->LineTo(800,ncpz2);
Canvas->MoveTo(0,ncpz3); Canvas->LineTo(800,ncpz3);
Canvas->MoveTo(0,ncpz4); Canvas->LineTo(800,ncpz4);
if(flag_tm==0){
str=IntToStr((int)zero1);Canvas->TextOut(10,ncpz1-20,str);
str=IntToStr((int)zero2);Canvas->TextOut(10,ncpz2-20,str);
str=IntToStr((int)zero3);Canvas->TextOut(10,ncpz3-20,str);
str=IntToStr((int)zero4); Canvas->TextOut(10,ncpz4-20,str);
}else if(flag_tm==1){
str=IntToStr((int)zero_j1);Canvas->TextOut(10,ncpz1-20,str);
str=IntToStr((int)zero_j3);Canvas->TextOut(10,ncpz2-20,str);
str=IntToStr((int)zero_z1);Canvas->TextOut(10,ncpz3-20,str);
str=IntToStr((int)zero1); Canvas->TextOut(10,ncpz4-20,str);
}else if(flag_tm==2){
str=IntToStr((int)zero_j2);Canvas->TextOut(10,ncpz1-20,str);
str=IntToStr((int)zero_j4);Canvas->TextOut(10,ncpz2-20,str);
str=IntToStr((int)zero_z2);Canvas->TextOut(10,ncpz3-20,str);
str=IntToStr((int)zero2); Canvas->TextOut(10,ncpz4-20,str);
}else if(flag_tm==3){
str=IntToStr((int)zero_j5);Canvas->TextOut(10,ncpz1-20,str);
str=IntToStr((int)zero_j7);Canvas->TextOut(10,ncpz2-20,str);
str=IntToStr((int)zero_z3);Canvas->TextOut(10,ncpz3-20,str);
str=IntToStr((int)zero3); Canvas->TextOut(10,ncpz4-20,str);
}else{
str=IntToStr((int)zero_j6);Canvas->TextOut(10,ncpz1-20,str);
str=IntToStr((int)zero_j8);Canvas->TextOut(10,ncpz2-20,str);
str=IntToStr((int)zero_z4);Canvas->TextOut(10,ncpz3-20,str);
str=IntToStr((int)zero4); Canvas->TextOut(10,ncpz4-20,str);
}
Canvas->MoveTo(0,ncpz5); Canvas->LineTo(800,ncpz5);
str=IntToStr((int)zero); Canvas->TextOut(10,ncpz5-20,str);
}else if(bd.hq_mode==HQ_CPZ){
if(flag_qh==false){
Canvas->MoveTo(0,cpz1); Canvas->LineTo(800,cpz1);
Canvas->MoveTo(0,cpz2); Canvas->LineTo(800,cpz2);
Canvas->MoveTo(0,cpz3); Canvas->LineTo(800,cpz3);
Canvas->MoveTo(0,cpz4); Canvas->LineTo(800,cpz4);
str=IntToStr((int)zero_j1);Canvas->TextOut(10,cpz1-20,str);
str=IntToStr((int)zero_j2);Canvas->TextOut(10,cpz2-20,str);
str=IntToStr((int)zero_z1);Canvas->TextOut(10,cpz3-20,str);
str=IntToStr((int)zero_z2);Canvas->TextOut(10,cpz4-20,str);
}
Canvas->MoveTo(0,cpz5); Canvas->LineTo(800,cpz5);
str=IntToStr((int)zero); Canvas->TextOut(10,cpz5-20,str);
}else if(bd.hq_mode==HQ_BDG){
Canvas->MoveTo(0,bdg1); Canvas->LineTo(800,bdg1);
Canvas->MoveTo(0,bdg2); Canvas->LineTo(800,bdg2);
Canvas->MoveTo(0,bdg3); Canvas->LineTo(800,bdg3);
str=IntToStr((int)zero_j1); Canvas->TextOut(10,bdg1-20,str);
str=IntToStr((int)zero_z1); Canvas->TextOut(10,bdg2-20,str);
str=IntToStr((int)zero); Canvas->TextOut(10,bdg3-20,str);
}else if(bd.hq_mode==HQ_DG){
Canvas->MoveTo(0,dg1); Canvas->LineTo(800,dg1);
str=IntToStr((int)zero); Canvas->TextOut(10,dg1-20,str);
}else if(bd.hq_mode==HQ_STMDG){
Canvas->MoveTo(0,stmdg1); Canvas->LineTo(800,stmdg1);
Canvas->MoveTo(0,stmdg2); Canvas->LineTo(800,stmdg2);
str=IntToStr((int)zero1); Canvas->TextOut(10,stmdg1-20,str);
str=IntToStr((int)zero2); Canvas->TextOut(10,stmdg2-20,str);
}else if(bd.hq_mode==HQ_STMBDG||bd.hq_mode==HQ_BDG3){
if(flag_tm1==true){
Canvas->MoveTo(0,stmbdg1); Canvas->LineTo(800,stmbdg1);
Canvas->MoveTo(0,stmbdg3); Canvas->LineTo(800,stmbdg3);
Canvas->MoveTo(0,stmbdg5); Canvas->LineTo(800,stmbdg5);
str=IntToStr((int)zero_j1); Canvas->TextOut(10,stmbdg1-20,str);
str=IntToStr((int)zero_z1); Canvas->TextOut(10,stmbdg3-20,str);
str=IntToStr((int)zero1); Canvas->TextOut(10,stmbdg5-20,str);
}else if(flag_tm2==true){
Canvas->MoveTo(0,stmbdg2); Canvas->LineTo(800,stmbdg2);
Canvas->MoveTo(0,stmbdg4); Canvas->LineTo(800,stmbdg4);
Canvas->MoveTo(0,stmbdg6); Canvas->LineTo(800,stmbdg6);
str=IntToStr((int)zero_j2); Canvas->TextOut(10,stmbdg2-20,str);
str=IntToStr((int)zero_z2); Canvas->TextOut(10,stmbdg4-20,str);
str=IntToStr((int)zero2); Canvas->TextOut(10,stmbdg6-20,str);
}else{
if(flag_qh==false){
Canvas->MoveTo(0,stmbdg1); Canvas->LineTo(800,stmbdg1);
Canvas->MoveTo(0,stmbdg2); Canvas->LineTo(800,stmbdg2);
Canvas->MoveTo(0,stmbdg3); Canvas->LineTo(800,stmbdg3);
Canvas->MoveTo(0,stmbdg4); Canvas->LineTo(800,stmbdg4);
str=IntToStr((int)zero_j1); Canvas->TextOut(10,stmbdg1-20,str);
str=IntToStr((int)zero_j2); Canvas->TextOut(10,stmbdg2-20,str);
str=IntToStr((int)zero_z1); Canvas->TextOut(10,stmbdg3-20,str);
str=IntToStr((int)zero_z2); Canvas->TextOut(10,stmbdg4-20,str);
}
str=IntToStr((int)zero1); Canvas->TextOut(10,stmbdg5-20,str);
str=IntToStr((int)zero2); Canvas->TextOut(10,stmbdg6-20,str);
Canvas->MoveTo(0,stmbdg5); Canvas->LineTo(800,stmbdg5);
Canvas->MoveTo(0,stmbdg6); Canvas->LineTo(800,stmbdg6);
}
}
// draw flag
for(i=0;i/step<800;i++){
if(bd.hq_mode==HQ_STMBDG||bd.hq_mode==HQ_BDG3||bd.hq_mode==HQ_NEWBDG){
if(flag_tm1==true){
if( (*(p_buf_z1+offset+i) & 0x8000)==0x8000){
Canvas->Pen->Color=clRed;
Canvas->MoveTo(i/step,0);
Canvas->LineTo(i/step,600);
if(flag_ofst) Canvas->TextOut(i/step,290,IntToStr(int(offset+i)));
}
}else if(flag_tm2==true){
if( (*(p_buf_z2+offset+i) & 0x8000)==0x8000){
Canvas->Pen->Color=clYellow;
Canvas->MoveTo(i/step,0);
Canvas->LineTo(i/step,600);
if(flag_ofst) Canvas->TextOut(i/step,290,IntToStr(int(offset+i)));
}
}else{
if( (*(p_buf_z1+offset+i) & 0x8000)==0x8000){
Canvas->Pen->Color=clRed;
Canvas->MoveTo(i/step,0);
Canvas->LineTo(i/step,600);
if(flag_ofst) Canvas->TextOut(i/step,290,IntToStr(int(offset+i)));
}
if( (*(p_buf_z2+offset+i) & 0x8000)==0x8000){
Canvas->Pen->Color=clYellow;
Canvas->MoveTo(i/step,0);
Canvas->LineTo(i/step,600);
if(flag_ofst) Canvas->TextOut(i/step,290,IntToStr(int(offset+i)));
}
}
}else if(bd.hq_mode==HQ_NEWCPZ){
if(flag_tm==0){
PUSHORT tmp_p;
for(int iii=0;iii<5;iii++){
if( iii==0) tmp_p=p_buf_z1;
else if(iii==1) tmp_p=p_buf_z2;
else if(iii==2) tmp_p=p_buf_z3;
else if(iii==3) tmp_p=p_buf_z4;
else if(iii==4) tmp_p=p_buf_j1;
if( (*(tmp_p+offset+i) & 0x8000)==0x8000){
Canvas->Pen->Color=clRed;
Canvas->MoveTo(i/step,120*iii);
Canvas->LineTo(i/step,120*(iii+1));
if(flag_ofst) Canvas->TextOut(i/step,120*iii,IntToStr(int(offset+i)));
//str=IntToStr((int)kg[jj].ofst);
//Canvas->TextOut((kg[jj].ofst-offset)/step,150*(kg[jj].who-1)+20,str);
}
}
}else if(flag_tm==10){
PUSHORT tmp_p;
tmp_p=p_buf_j1;
if( (*(tmp_p+offset+i) & 0x8000)==0x8000){
Canvas->Pen->Color=clRed;
Canvas->MoveTo(i/step,0);
Canvas->LineTo(i/step,600);
if(flag_ofst) Canvas->TextOut(i/step,290,IntToStr(int(offset+i)));
}
}else{
PUSHORT tmp_p;
if(flag_tm==1) tmp_p=p_buf_z1;
else if(flag_tm==2) tmp_p=p_buf_z2;
else if(flag_tm==3) tmp_p=p_buf_z3;
else tmp_p=p_buf_z4;
if( (*(tmp_p+offset+i) & 0x8000)==0x8000){
Canvas->Pen->Color=clRed;
Canvas->MoveTo(i/step,0);
Canvas->LineTo(i/step,600);
if(flag_ofst) Canvas->TextOut(i/step,290,IntToStr(int(offset+i)));
}
}
}else if(bd.hq_mode==HQ_CPZ24){
if(flag_tm>8||flag_tm<1) err("draw():err flag_tm");
else if( (*(p_buf_z[flag_tm-1]+offset+i) & 0x8000)==0x8000){
Canvas->Pen->Color=clRed;
Canvas->MoveTo(i/step,0);
Canvas->LineTo(i/step,600);
if(flag_ofst) Canvas->TextOut(i/step,290,IntToStr(int(offset+i)));
}
}else{
if( (*(p_buf_z1+offset+i) & 0x8000)==0x8000){
Canvas->Pen->Color=clRed;
Canvas->MoveTo(i/step,0);
Canvas->LineTo(i/step,600);
if(flag_ofst) Canvas->TextOut(i/step,290,IntToStr(int(offset+i)));
}
}
}
// draw 棒图
if(flag_bt==true){
int kk,j;
int ab_cnt=0,bl_cnt=0;
Canvas->Pen->Color=clNavy ;
if(bd.hq_mode==HQ_CPZ24){
Canvas->MoveTo(0,1*C4); Canvas->LineTo(800,1*C4);
Canvas->MoveTo(0,2*C4); Canvas->LineTo(800,2*C4);
}else if(bd.hq_mode==HQ_NEWCPZ){
Canvas->MoveTo(0,ncpz1); Canvas->LineTo(800,ncpz1);
Canvas->MoveTo(0,ncpz2); Canvas->LineTo(800,ncpz2);
}else{
Canvas->MoveTo(0,300);
Canvas->LineTo(800,300);
}
/*
for(i=0;i<800;i++){ // draw kk
kk=get_kk(1,offset+i);
Canvas->MoveTo(i,300-kk);
Canvas->LineTo(i,300-kk+1);
} */
if(bd.hq_mode==HQ_NEWCPZ){
if(flag_tm==1){ draw_bt1();}//// 台面1
else if(flag_tm==2){draw_bt2();}//// 台面2
else if(flag_tm==3){draw_bt3();}//// 台面3
else if(flag_tm==4){draw_bt4();}//// 台面4
}
else if(bd.hq_mode==HQ_STMBDG||bd.hq_mode==HQ_BDG3){
Canvas->Pen->Color=clWhite ;
if(flag_tm1==true){ //// 台面1
for(i=0;i<800;i++){
kk=get_kk(1,offset+i);
if(kk>0) ab_cnt++;
else{
for(j=i-ab_cnt;j<i;j++){
Canvas->MoveTo(j,300-(data_j1(offset+i-ab_cnt)-zero_j1)/dd);
Canvas->LineTo(j,300-(data_j1(offset+i)-zero_j1)/dd);
}
ab_cnt=0;
}
}
Canvas->Pen->Color=clGreen ;
for(i=0;i<800;i++){
kk=get_kk(1,offset+i);
if(kk<0) bl_cnt++;
else{
for(j=i-bl_cnt;j<i;j++){
Canvas->MoveTo(j,300-(data_j1(offset+i-bl_cnt)-zero_j1)/dd);
Canvas->LineTo(j,300-(data_j1(offset+i)-zero_j1)/dd);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -