AW: Prozentrechnung
Ach eins noch: wie kann man denn die nachkommastellen begrenzen?
|
AW: Prozentrechnung
|
AW: Prozentrechnung
Oder wenn es nur um die Ausgabe geht: Format
|
AW: Prozentrechnung
Hier gleich mal der gesamte Quelltext:-D
ist aber noch nicht fertig ein paar farben Fehlen noch, wie z.B.gelb:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ExtDlgs, jpeg, Menus, ComCtrls, MidasLib; type TForm1 = class(TForm) BitBtn1: TBitBtn; Image1: TImage; OpenPictureDialog1: TOpenPictureDialog; MainMenu1: TMainMenu; bildffnen1: TMenuItem; Memo1: TMemo; Memo2: TMemo; Memo3: TMemo; ProgressBar1: TProgressBar; Ende1: TMenuItem; procedure BitBtn1Click(Sender: TObject); procedure bildffnen1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Ende1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1:TForm1; y,u,v,b,r,g,maxu,maxv,minu,minv,z,maxz,minz:real; rot,blau,lila,gruen,schwarz,orange,grauweiss:integer; color:TColor; mein_jpeg: TJpegImage; mein_bmp: tBitmap; implementation {$R *.dfm} procedure TForm1.bildffnen1Click(Sender: TObject); begin if OpenPictureDialog1.Execute then begin Image1.Picture.LoadFromFile(OpenPictureDialog1.filename); end; end; procedure TForm1.BitBtn1Click(Sender: TObject); var x,y:Integer; begin ProgressBar1.position:=0; for x:=0 to Image1.Picture.Bitmap.Width -1 do begin //Progress Bar ProgressBar1.Max := Image1.Picture.Bitmap.Width +1; ProgressBar1.Position := ProgressBar1.Position+1; //Progress Bar Ende for y:=0 to Image1.Picture.Bitmap.Height -1 do begin color :=Image1.Picture.Bitmap.Canvas.Pixels[x,y]; b:=getbvalue(color); g:=getgvalue(color); r:=getrvalue(color); z:=(0.299*r)+(0.587*g)+(0.114*b); u:=(b-z)*0.493; v:=(r-z)*0.877; //Memo1.Lines.Add('r: ' + floattostr(r) + ' g: ' + floattostr(g) +' b: ' + floattostr(b)); //Memo2.Lines.add(floattostr(z) + floattostr(u) + floattostr(u)); //start Farbe verzweigungen if (z>0) and (z<121)then begin // y = 0 - 0.33 if (u>-112) and (u<16) and (v<157) and (v>33.64)then rot:=rot+1 else begin if (u<8) and (u>-64) and (v<33.64) and (v>11.21)then rot:=rot+1 else begin if (u<112) and (u>16) and (v<157) and (v>100.92)then lila:=lila+1 else begin if (u<112) and (u>32) and (v<100.92) and (v>33.64)then blau:=blau+1 else begin if (u<112) and (u>8) and (v<33.64) and (v>-157)then blau:=blau+1 else begin if (u<8) and (u>-8) and (v<11.21) and (v>-157)then gruen:=gruen+1 else begin if (u<-8) and (u>-112) and (v<0) and (v>-157)then gruen:=gruen+1 else begin if (u<64) and (u>-112) and (v<33.64) and (v>0)then gruen:=gruen+1 else begin if (u<-8) and (u>64) and (v<11.21) and (v>0)then gruen:=gruen+1 else begin if (u<8) and (u>-8) and (v<11.21) and (v>-11.21)then schwarz:=schwarz+1 end; end; end; end; end; end; end; end; end; end else begin if (z>120) and (z<171)then begin //y = 86 - 170 if (u<-16) and (u>-112) and (v<112.14) and (v>22.42)then orange:=orange+1 else begin if (u<16) and (u>-112) and (v<157) and (v>112.14)then orange:=orange+1 else begin if (u<112) and (u>-16) and (v<157) and (v>11.21)then lila:=lila+1 else begin if (u<122) and (u>8) and (v<11.21) and (v>-11.21)then blau:=blau+1 else begin if (u<112) and (u>0) and (v<-11.21) and (v>-157)then blau:=blau+1 else begin if (u<0) and (u>-112) and (v<-11.21) and (v>-157)then gruen:=gruen+1 else begin if (u<-8) and (u>-112) and (v<11.21) and (v>-11.21)then gruen:=gruen+1 else begin if (u<8) and (u>-8) and (v<11.21) and (v>-11.21)then grauweiss:=grauweiss+1; end; end; end; end; end; end; end; end else begin //y = 171 - 255 end; end; //ende Farbe verzweigungen end; end; Memo3.Lines.Add('Rot:' + inttostr(rot)); Memo3.Lines.add(FloatToStr(rot * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); Memo3.Lines.Add('Violett:' + inttostr(lila)); Memo3.Lines.add(FloatToStr(lila * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); Memo3.Lines.Add('Blau:' + inttostr(blau)); Memo3.Lines.add(FloatToStr(blau * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); Memo3.Lines.Add('Grün:' + inttostr(gruen)); Memo3.Lines.add(FloatToStr(gruen * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); Memo3.Lines.Add('Schwarz:' + inttostr(schwarz)); Memo3.Lines.add(FloatToStr(schwarz * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); Memo3.Lines.Add('Orange:' + inttostr(orange)); Memo3.Lines.add(FloatToStr(orange * 100 / (Image1.Picture.Width * Image1.Picture.Height)) + '%'); end; procedure TForm1.FormCreate(Sender: TObject); begin Memo1.lines.Delete(0); Memo2.lines.Delete(0); Memo3.lines.Delete(0); end; procedure TForm1.Ende1Click(Sender: TObject); begin close; end; end. |
AW: Prozentrechnung
Wie wär's mit einem
Delphi-Quellcode:
?
if (Bedingung) then
... else if (Bedingung) then ... else if (Bedingung) then ... |
AW: Prozentrechnung
im Prinzip hab ich das doch oder?
Außer dass das if...then eine zeile weiter unten steht. |
AW: Prozentrechnung
Er meinte wohl die Einrückungen, die gehen ja im Laufe der Zeit sehr weit nach rechts. Übrigens: wozu brauchst Du die ganzen globalen Variablen und die MidasLib?
|
AW: Prozentrechnung
Die variablen kommen aus den beta vesions zeiten alls das ganze noch nicht so funktionierte.
da hab ich mir die maximalen und die minimale y,u,v,r,g und b werte ausgeben lassen(RGB farbraum, YUV Farbraum) Midaslib stand so im internet damit dass programm unter windows nicht mehr abstürtzt. (machts aber trotzdem noch) |
AW: Prozentrechnung
Mach doch erst einmal aus den benötigten globalen Variablen lokale und lass die anderen weg. Zudem würde ich die Farbvariable nicht Color nennen, da das Formular eine gleichnamige Eigenschaft besitzt. Und dass das Programm abstürzt dürfte nicht an einer fehlenden MidasLib liegen.
|
AW: Prozentrechnung
vielleicht in der end-version
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz