1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
procedure TForm5.FormCreate(Sender: TObject);
begin
// ceci est un Tstring qui permet de rentrer des infos
TInfo.Cells[0,0]:='N° Couche'; // numero de couche
TInfo.Cells[1,0]:='Nb Neu.';
TInfo.Cells[2,0]:='Nom Neu';
TInfo.Cells[3,0]:='Couleur';
TInfo.Cells[0,1]:='1'; // numero de couche
TInfo.Cells[1,1]:='3'; // nombre de neurone par couche
TInfo.Cells[2,1]:='X'; // nom de la couche
TInfo.Cells[3,1]:='$00C08080';// couleur de la couche ...
TInfo.Cells[0,2]:='2';
TInfo.Cells[1,2]:='4';
TInfo.Cells[2,2]:='Y';
TInfo.Cells[3,2]:='$001717FF';
TInfo.Cells[0,3]:='3';
TInfo.Cells[1,3]:='2';
TInfo.Cells[2,3]:='Z';
TInfo.Cells[3,3]:='$00FF5B5B';
TInfo.Cells[0,4]:='4';
TInfo.Cells[1,4]:='1';
TInfo.Cells[2,4]:='U';
TInfo.Cells[3,4]:='$0000DF70';
end;
//==============================================================
procedure TForm5.Button2Click(Sender: TObject);
Type Tneurone=record
Orig:Tpoint;
couche:integer;
neurone:integer;
neuroneMax:integer;
Nom:string;
couleur:Tcolor;
end;
var neurone:array of Tneurone;
var L,H,T,K,N:integer;
Dx,Dy:integer;
Page:Tbitmap;
begin
// creation record
T:=0;
Dx:=0;
Dy:=0;
setlength(neurone,T);
for L:=1 to TInfo.RowCount - 1 do
begin
if TInfo.Cells[1,L]<>'' then
begin
K:=strtoint(TInfo.Cells[1,L]);
if Dy<K then Dy:=K ; // nombre meurone max
for N := 1 to K do
begin
setlength(neurone,T+1);
neurone[T].couche:=strtoint(TInfo.Cells[0,L]);
neurone[T].neurone:=N;
neurone[T].neuroneMax:=K;
neurone[T].nom:=TInfo.Cells[2,L]+inttostr(N);
neurone[T].couleur:=strtoint(TInfo.Cells[3,L]);
neurone[T].orig.X:=0;
neurone[T].orig.Y:=0;
inc(T);
end;
Inc(Dx);// nombre max de couche
end;
end;
// initalisation position
H:=Dy*70;
for N := 0 to high(neurone) do
begin
neurone[N].orig.x:=(neurone[N].couche)*140;
neurone[N].orig.y:=round ((H/(neurone[N].neuroneMax+1))*neurone[N].neurone);
end;
// creation du bitmap
Page:=Tbitmap.create;
Page.Width:=(Dx+1)*140;
Page.height:=H;
Page.canvas.rectangle(0,0,Page.Width,Page.Height);
// dessine fleche
for N := 0 to high(neurone) do
begin
for K := 0 to high(neurone) do
with page.canvas do
begin
if neurone[K].couche=neurone[N].couche-1 then
begin
pen.color:=neurone[K].couleur;
moveto(neurone[N].orig.x,neurone[N].orig.y);
lineto(neurone[K].orig.x,neurone[K].orig.y);
end;
end;
end;
// dessine ellipse
for N := 0 to high(neurone) do
with page.Canvas do
begin
pen.Width:=2;
pen.color:=neurone[N].couleur;
ellipse(neurone[N].orig.x-30,neurone[N].orig.y-15,neurone[N].orig.x+30,neurone[N].orig.y+15);
font.Style:=[Fsbold];
textOut(neurone[N].orig.x-5,neurone[N].orig.y-6,neurone[N].nom);
end;
// transfere bitmap
image1.Width:=page.Width;
image1.height:=page.height;
image1.Picture.Bitmap:=Page;
// detruit le bitmap
Page.free;
end; |
Partager