/ / CGContext atšķirība horizontālā un vertikālā līnijas platumā - ios, iphone, tīklenes displejs, cgcontext

CGContext atšķirība horizontālā un vertikālā līnijas platumā - ios, iphone, tīklenes displejs, cgcontext

Šeit ir mans kods:

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);

Un šeit ir rezultāts:

šeit ievadiet attēla aprakstu

kā jūs varat redzēt vertikālā līnija ir precīza 1px platums, bet horizontālā līnija ir izstiepts. Esmu mēģinājis visas iespējamās vērtības Y - (20, 20.5, 21, 21.5) katrai laika līnijai.

Es šeit esmu izlasījis daudz pavedienu, bet bez panākumiem var kāds izskaidrot, kas notiek un kā es varu izdarīt horizontālu līniju tīklenes displejā ar precīzu 1px platumu?

update: To atrisināja:

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

1retina px bez jebkādām stiepēm!

Atbildes:

1 atbilde Nr. 1

Izmēģiniet šo:

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);

Ja jūs zīmējat līniju un punkts ir frakcija, tad tas dos vāju līniju. Ceru tas palīdzēs.. :)

EDIT:

Šeit ir saite jūs domājat, ka jūs meklējat. Lasīt Punkti Versus pikseļi. Tajā ir aprakstīta problēma, ar kuru jūs saskaraties.


0 atbildei Nr. 2

Tas ir tāpēc, ka jūs gūstat 21,5 punktus.

Lietojot pusi punktu, tas mēģinās ievietotlīnija starp divām pikseļu rindām un, lai to izdarītu, tā mēģina novietot pusi līnijas katrā pusē (kas acīmredzot nav iespējams), un tāpēc tā katrā vietā uzlīmē vāju līniju.

Tikai neizmantojiet pusi punktus, un tas būs labi.


Saistītie jautājumi


Komentāri (0)

Pievieno komentāru