/ / CGContext különbség vízszintes és függőleges vonalszélességben - ios, iphone, retina-kijelző, cgcontext

CGContext különbség vízszintes és függőleges vonalszélességben - ios, iphone, retina-display, cgcontext

Itt van a kódom:

CGContextSetShouldAntialias(context, NO);
CGContextSetLineWidth(context, 0.5);

CGPoint hPoints[2];
hPoints[0] = CGPointMake(10, 21.5);
hPoints[1] = CGPointMake(100, 21.5);

CGContextAddLines(context, hPoints, 2);

CGPoint vPoints[2];
vPoints[0] = CGPointMake(10, 21.5);
vPoints[1] = CGPointMake(10, 41.5);

CGContextAddLines(context, vPoints, 2);
CGContextStrokePath(context);

És itt van az eredmény:

itt írja be a kép leírását

ahogy látható, a függőleges vonal pontos 1px szélesség, de a vízszintes vonal meghúzódik. Próbáltam minden lehetséges értéket Y-re (20, 20,5, 21, 21,5) minden idővonalra.

Sok szálat olvastam itt, de sikertelenül valaki elmagyarázhatja, mi történik, és hogyan rajzolhatok vízszintes vonalat a retina kijelzőn, pontos 1px szélességgel?

UPD: Megoldotta:

UIView *line = [[UIView alloc] initWithFrame:CGRectMake(10, 20, 100, 0.5)];
[line setBackgroundColor:[UIColor greenColor]];
[self addSubview:line];

1retina px minden szakasz nélkül!

válaszok:

1 a válasz № 1

Próbáld ezt:

CGContextSetShouldAntialias(context, NO);
CGContextSetLineWidth(context, .5);

CGPoint hPoints[2];
hPoints[0] = CGPointMake(10, 22.0);
hPoints[1] = CGPointMake(100, 22.0);

CGContextAddLines(context, hPoints, 2);

CGPoint vPoints[2];
vPoints[0] = CGPointMake(10, 22.0);
vPoints[1] = CGPointMake(10, 42.0);

CGContextAddLines(context, vPoints, 2);
CGContextStrokePath(context);

Ha egy vonalat rajzol, és egy pont egy töredék, akkor halvány vonalat ad. Remélem ez segít.. :)

EDIT:

Itt van link azt hiszem, azt hiszem. Olvas Pontok versus pixelek. Leírja az Ön előtt álló problémát.


0 a válasz № 2

Ez azért van, mert 21,5 pontot rajzol.

Amikor fél pontot használ, megpróbálja elhelyeznia két képpont sora között, és ennek érdekében megpróbál feloldani a két vonal felét mindkét oldalon (ami nyilvánvalóan nem lehetséges), és így halvány vonalat rajzol mindkét oldalon.

Csak ne használjon félpontot, és rendben lesz.


Kapcsolódó kérdések


Hozzászólások (0)

Hozzászólni