Re: Pomoc s Delphi7 Personal
Ja som stare line mazal tak ze som nakreslil tu istu ciaru farbou pozadia... Len musis vediet povodne suradnice.
Nejsi přihlášen. Přihlas se nebo se zaregistruj.
Audioweb.cz » Smetiště » Pomoc s Delphi7 Personal
Ja som stare line mazal tak ze som nakreslil tu istu ciaru farbou pozadia... Len musis vediet povodne suradnice.
Mozno sa ti hodi...
{Funkcia rozlozi retazec podla oddelovaca do poslaneho StringListu
As_Text - rozdelovany retazec '1,2,3,4,5'
As_Odd - oddelovac ','
Asl_res - vrati stringlist bude obsahovat 5 hodnot '1' - '5'
Ab_Trim - ci sa ma po oddeleni retazec otrimovat '1 , 2' rozdeli na '1' a '2'
}
procedure RozlozString( As_Text : string; As_Odd : char; var Asl_res : TStringList; Ab_Trim : boolean = True );
var
li_pos: integer;
lch_char: char;
begin
lch_char:= As_Odd;
Asl_res.Clear;
if Length(As_Text) < 1 then
begin
Asl_res.Add(As_Text);
Exit; //Co som to len dostal ?
end;
li_pos:= Pos(lch_char, As_Text);
if li_pos = 0 then //Bez ciarky, tak co sa deje ?
begin
Asl_res.Add(As_Text);
Exit;
end;
while (li_pos > 0) do
begin
if Ab_Trim then Asl_res.Add(Trim(Copy(As_Text, 1, (li_pos-1))))
else Asl_res.Add(Copy(As_Text, 1, (li_pos-1)));
Delete(As_Text, 1, li_pos);
li_pos:= Pos(lch_char, As_Text);
if li_pos = 0 then
begin
if Ab_Trim then Asl_res.Add(Trim(As_Text))
else Asl_res.Add(As_Text);
end;
end;
end;
Díky, jak jednoduché, skvělé, geniální, ale je tu problém: Průhledný Image má na výšku 241px, udám-li souřadnice vykreslení pixelu na (0,240), tedy přesně spodní levý rožek, zbělá celý image a ten bod je průhledný.
Image1.Canvas.Pixels[0,240]:=clRed;
Druhá zajímavost: Log(1) je nula, vždycky je to nula i když v závorce provádím výpočet jako (10*0.1), (100*0.01), jen u (1000*0.001) to přesná nula není.
Button1.Caption:=FloatToStr(Log10(1e3*1e-3));
Taky diky dhamane, je to je kapku složitý a nevím, zda to bude fungovat na bitmapě.
To není ani tak zajímavost, jako spíš základy výpočetní techniky
Na průhlednost bych se vybod, jsou s tím akorát komplikace (pokud už neděláš třeba v OpenGL, jako že ne). Není důvod nevykreslit těch pár čar, tj. celý graf, úplně znova, vždy podle aktuálních voleb (evnt. začít na novém pozadí). Ušetříš si spoustu práce a prakticky nic to už dneska nestojí.
Tondo, jediný možný vysvětlení je, že to 1 není (jako že není). Už 0.1 se nedá v běžné reprezentaci zobrazit přesně. To, že ti to něco ukáže jako 1 (nebo 0), vůbec nemusí znamenat, že to je přesně. Počítače obecně nepočítají přesně, to jsem myslel těmi základy. Tady to třeba nevadí (většinou to nevadí), ale občas to dokáže nadělat dost nepříjemný problémy, je třeba s tím počítat.
Když má bitmapa nastavenou vlastnost TransparentMode na tmAuto, což je zřejmě default, považuje se barva spodního levého pixelu za průhlednou. Tolik praví Help. Když chceš čmárat i do toho rohového pixelu, musíš patrně nastavit Image.Picture.Bitmap.TransparentMode:=tmFixed a navíc možná nastavit ručně Bitmap.TransparentColor, ale to možná nebude nutné, nezkoušel jsem.
Ten příklad s Log10(0.001*1000) by tě neměl příliš překvapit. Kupříkladu ta jedna tisícina v 64bitovém floatu není 0.001 ale ve skutečnosti přibižně 0.00010000000000000002. No a co s tím dál provede výpočet toho logaritmu, ví asi jenom velcí drsňáci a ti co drátovali v procesoru floatovou aritmetiku.
f := Power(10.0, x / 430.0), neboli "10 umocněno na x/430".
- Kdybys pak chtěl obecně zobrazit interval frekvencí <f0, f1> na interval pixelových souřadnic <x0, x1>, uděláš to takhle:
x := k * log10(q * f);
a nazpátek f := power(10, x/k) / q;
kde koeficienty k, q jsou:
q := power(10.0, (x1*log10(f0) - x0*log10(f1)) / (x0 - x1));
k := x0 / log10(q * f0);
MaBate, počítám, že tuhle matematiku díky xoveru umíš nazpaměť i ožralej co? Mimochodem, nejsi ty céčkař?
Tyhle kupecký počty a matematika, Boramyre?
Nerejpej, já bych si to musel nakreslit a odvodit Tebe podezírám, že jsi to prostě vysypal.
Kdepak, kdysi dávno nakreslil a odvodil.. Když už to je takhle napsaný, tak je to jasný, ale z hlavy bych to celý dohromady taky asi nedal.
Co tohle?
http://www.koders.com/delphi/fid40BF644 … network#L1
Musel by sis k tomu jen postahovat a zprovoznit knihovny, ktery to pouziva (asi libpng, aj.) - http://delphi.pjh2.de/articles/graphic/png.php#NGImage
Verim, ze neco z toho fungovat muze Delphi 2009 uz to pry umi primo v ramci TImage. Jinak to pujde asi ztuha. Spustit jiny program ze sveho muzes, ale to zrejme neresi problem, ne.
Díky moc, jen jestli by se našla dobrá duše a pomohla mi to do toho Delphi to nainstalovat. Řeším ten první link: háže mi to errory, něco dělám blbě. Chce to dll file, ono to nebude fungovat pouze s PngLib.pas a PngUnit.pas? První jsem úspěšně nainstaloval přes Install Component, vyskočí mi okno níž, pak beztak nefunguje příkaz WriteBitmapToPngFile, nikde žádný Help, takže absolutně nevím co s tím.
Audioweb.cz » Smetiště » Pomoc s Delphi7 Personal