2008-11-23 14 views

Odpowiedz

4

Można narysować linię o długości 1 piksela na danej współrzędnej; to powinno osiągnąć to, co chcesz.

13

Kwarc nie jest interfejsem API opartym na pikselach, a jego konteksty niekoniecznie są buforami pikseli. Jeśli chcesz narysować pixmapy, utwórz kontekst bitmapowy z CGBitmapContextCreate(). Udostępniamy bufor, który można bezpośrednio manipulować, i można go skopiować do innego kontekstu, tworząc z tego samego bufora CGImage, przy użyciu rysunku CGImageCreate().

21
CGContextFillRect(context, CGRectMake(x,y,1,1)); 
0

Mam ten sam problem - Uważam, że najlepszym rozwiązaniem jest podobny do ostatniego, ale przynajmniej nie zostawić coś, co wygląda jak „kreską” ... Oczywiście, należy upewnić się, x/y są równe> 0.

CGContextFillRect (kontekst, CGRectMake (x - 0,5, y - 0,5, 1,0, 1,0));

7

Dostałem punkt (linia o zerowej długości) do rysowania po ustawieniu ograniczeń linii na kCGLineCapRound. Domyślny limit nie ma długości, więc nie można go narysować.

Argument, że punkt nie ma wielkości, jest głupi. Linie nie mają szerokości, ale możemy je narysować (używając "szerokości linii" ze stanu rysowania). Punkt powinien rysować dokładnie w ten sam sposób, a przy różnych pułapach linii uważam, że tak.

Może to zachowanie jest nowe?

+1

Nie, nie jest. Punkt jest właśnie taki: Pojedynczy punkt. Rozmiar to odległość między co najmniej jedną parą punktów. Ograniczniki linii są dodatkiem do długości linii, którą rysujesz; w przypadku okrągłej pokrywy, promień jest o połowę krótszy niż szerokość linii, więc linia o zerowej długości z okrągłymi czapkami o szerokości 1 pt rysuje dwa czapki o promieniu 1/2 pt, bez żadnego odstępu, tworząc w ten sposób okrąg o wartości 1 średnica pt. I nie, to zachowanie nie jest nowe: czapki liniowe i większość pozostałych Quartzów pochodzi z pliku PDF z PostScript, który pochodzi z 1985 roku. –

+4

Nie oznacza to sugerowania, że ​​punkt ma rozmiar, tylko że jego brak rozmiar jest głupim pretekstem do tego, że nie jest w stanie go narysować. Linia (jako koncepcja matematyczna) nie ma szerokości, ale możemy ją narysować. Narysowanie "linii o zerowej długości" z zaokrąglonymi czapkami powoduje wyświetlenie punktu na ekranie o średnicy linii. Okrągłe czapki oferują zasadniczo ustawienie "średnicy punktu". Jeśli jednak oryginalny plakat chce ustawić kolor piksela o wartości jednego piksela, należy to zrobić, ustawiając wartości bezpośrednio w kontekście bitmapowym, a nie za pomocą procedur rysowania opartych na ścieżkach. – Chad

+0

Tego właśnie szukałem! CGContextSetLineWidth (desiredWidth); CGContextSetLineCap (UIGraphicsGetCurrentContext(), kCGLineCapRound); Następnie narysuj linię od punktu do siebie. – rmp251

6

Narysuj bardzo małą elipsę/okrąg i wypełnij ją!

CGContextAddEllipseInRect(Context,(CGRectMake (x_dot, y_dot, 3.0, 3.0)); 
CGContextDrawPath(Context, kCGPathFill); 
CGContextStrokePath(Context); 

Używam tego kodu, aby utworzyć małą kropkę (3x3 piksele) w kropkowanej nucie muzycznej.

0

Swift 3 „Argument, że punkt ma rozmiar nie jest głupie”

UIRectFill(CGRect(x: x, y: y, width: 1, height: 1)) 
Powiązane problemy