Zeichnen Histogramm benötigt mehr Genauigkeit im iPhone

8

Ich arbeite in einer App, in der ich Histogramm von jedem eingefügten Bild zeichnen muss. Ich kann Histogramm erfolgreich zeichnen, aber es ist nicht so scharf wie in PREVIEW in Mac OS.

Da der Code zu groß ist, habe ich ihn auf GitHub hochgeladen Klicken Sie hier um Herunterladen

Die RGB-Werte werden in

eingelesen %Vor%

Ich habe Werte in c-Array-Variablen gespeichert, fltR, fltG, fltB.

Ich habe eine Klasse ClsDrawPoint es hat Mitglieder

%Vor%

Bereitete dann ein Array vor, das Objekte von ClsDrawPoint mit dem Index fltR [] als X-Wert und Wert für diesen Index als Y-Wert enthält.

Das Array

ist vorbereitet und das Diagramm wird in

gezeichnet %Vor%

Methode

Sie können das Ergebnis sehen

Derzeit ist es nicht so genau wie in PREVIEW in Mac für das gleiche Bild. Sie können ein Bild in der PREVIEW-App in Mac öffnen und in Tools & gt; AdjustColor können Sie das Histogramm dieses Bildes sehen. Ich denke, wenn mein Graph akkratiert, wird es schärfer sein. Bitte überprüfen Sie meinen Code und schlagen Sie mir vor, wenn Sie es dennoch finden, um es genauer zu machen.

    
HarshIT 26.10.2012, 11:31
quelle

1 Antwort

4

Ich habe Ihre Stichprobe aus Github gezogen und festgestellt, dass Ihre drawRect: -Methode in ClsDraw Linien zeichnet, die ein Pixel breit sind. Striche sind auf der Linie zentriert und mit einer Breite von 1 wird der Strich in Halbpixel aufgeteilt, wodurch Anti-Aliasing eingeführt wird.

Ich habe Ihre horizontalen Offsets um ein halbes Pixel verschoben und das Rendering sieht scharf aus. Ich habe mich nicht mit vertikalen Offsets herumgeschlagen, aber um sie scharf zu machen, müsste man sie runden und sie dann auf einen Halb-Pixel-Offset verschieben. Ich habe nur die folgende Änderung vorgenommen:

%Vor%

Beachten Sie die neue OFFSET_X und die Einführung von adjustedPoint .

Sie können auch eine CGPoint -Stellung in eine NSValue -Instanz für Ihre Punkte anstelle der benutzerdefinierten Klasse ClsDrawPoint verwenden, es sei denn, Sie möchten zusätzliches Verhalten oder zusätzliche Eigenschaften hinzufügen. Mehr Details verfügbar hier .

    
MattP 27.10.2012, 14:40
quelle

Tags und Links