- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Tôi cần tô màu các hình trên màn hình bất kỳ màu nào tôi muốn. Tôi hiện đang cố gắng thực hiện việc này bằng UIImage mà tôi muốn đổi màu cho phù hợp với nhu cầu của mình. Theo như tôi biết, cách duy nhất để làm điều này là lấy từng pixel của UIImage, yêu cầu nhiều dòng mã hơn tôi muốn viết để giải quyết vấn đề này. Có cách nào để thay đổi màu của UIImage ngoài những gì tôi đã viết không? Việc vẽ hình theo ngữ cảnh và điền vào nó có dễ dàng hơn không?
TY.
gia hạn:Hình lục giác tự vẽ theo cách chính xác nhưng lại không được điền chính xác chút nào. Đây là mã:
self.Hexagon.lineWidth=10;
[self.Hexagon moveToPoint:CGPointMake(hexWidth/2, 0)];
[self.Hexagon addLineToPoint:CGPointMake(hexWidth, hexHeight/4)];
[self.Hexagon addLineToPoint:CGPointMake(hexWidth, hexHeight*0.75)];
[self.Hexagon addLineToPoint:CGPointMake(hexWidth/2, hexHeight)];
[self.Hexagon addLineToPoint:CGPointMake(0, hexHeight*0.75)];
[self.Hexagon addLineToPoint:CGPointMake(0, hexHeight/4)];
[self.Hexagon addLineToPoint:CGPointMake(hexWidth/2, 0)];
[self.Hexagon closePath];
[[UIColor blackColor] setStroke];
[tự.Nét lục giác];
[[UIColor whiteColor] setFill];
[self.Hexagon điền];
câu trả lời hay nhất
我推荐使用CAShapeLayer
. Bạn thậm chí có thể tạo hiệu ứng động cho màu tô. Hiệu suất của bạn sẽ rất tốt và mức sử dụng bộ nhớ của bạn sẽ thấp.
Hàm này tạo CGPath chứa các hình lục giác: (dựa trên câu hỏi OP)
CGPathRef CGPathCreateHexagon( CGFloat hexWidth, CGFloat hexHeight)
{
CGMutablePathRef p = CGPathCreateMutable();
CGPathMoveToPoint(p, NULL, hexWidth * 0,5, 0,0 );
CGPathAddLineToPoint(p, NULL, hexWidth, hexHeight * 0.75 );
CGPathAddLineToPoint(p, NULL, hexWidth, hexHeight * 0.75 );
CGPathAddLineToPoint(p, NULL, hexWidth * 0.5, hexHeight );
CGPathAddLineToPoint(p, NULL, 0,0, hexHeight * 0,75);
CGPathAddLineToPoint(p, NULL, hexWidth * 0,5, 0,0 );
CGPathAddLineToPoint(p, NULL, 0,0, hexHeight * 0,25 );
CGPathAddLineToPoint(p, NULL, hexWidth * 0,5, 0,0 );
CGPathCloseSubpath( p );
trả lại p ;
}
设置 UIView
Phương pháp được sử dụng khi:
-(void)addHexagonLayer
{
Lớp CAShapeLayer * = [Lớp CAShapeLayer];
lớp.lineWidth = 10,0;
{
CGPathRef p = CGPathCreateHexagon(100.0, 100.0 );
lớp.path = p;
CGPathRelease( p );
}
layer.fillColor = [[ UIColor redColor ] CGColor ] ;
layer.position = (CGPoint){ CGRectGetMidX( self.view.bounds ), CGRectGetMidY( self.view.bounds ) } ; // định vị lớp hình lục giác của bạn một cách thích hợp.
[ self.view.layer addSublayer:layer ] ; // thêm lớp vào chế độ xem của bạn và đặt vị trí thích hợp
}
biên tậpTôi đã tạo một bản demo hoàn chỉnh chỉ để giải trí:
#import "AppDelegate.h"
CGPathRef tĩnh CGPathCreateHexagon( CGAffineTransform * t, CGFloat w, CGFloat h )
{
CGFloat w_4 = w * 0,25;
CGFloat w_2 = w * 0,5f;
CGFloat h_2 = h * 0,5f;
CGMutablePathRef p = CGPathCreateMutable();
CGPathAddLines( p, t, (CGPoint[]){
{ -w_4, h_2 }, { w_4, h_2 }, { w_2, 0 }, { w_4, -h_2 }, { -w_4, -h_2 }, { -w_2, 0 }
}, 6 ) ;
CGPathCloseSubpath( p );
trả lại p ;
}
@implementation CALayer (SetPositionPixelAligned)
-(CGPoint)pixelAlignedPositionForPoint:(CGPoint)p
{
Kích thước CGSize = self.bounds.size;
CGPoint AnchorPoint = self.anchorPoint;
Kết quả CGPoint = (CGPoint){ roundf( px ) + AnchorPoint.x * fmodf( size.width, 2.0f ), roundf( py ) + AnchorPoint.y * fmodf( size.height, 2.0f ) } ;
return result;
}
@kết thúc
@interface HexagonsView : UIView
@property (không nguyên tử) CGFloat hexHeight;
@property (không nguyên tử) CGFloat hexWidth;
@property (không nguyên tử, chỉ đọc) CGPathRef hexPath;
@kết thúc
@implementation HexagonsView
@synthesize hexagonPath = _hexagonPath;
-(void)dealloc
{
CGPathRelease( _hexagonPath );
_hexagonPath = NULL;
}
-(CGPathRef)hexagonPath
{
nếu ( !_hexagonPath )
{
_hexagonPath = CGPathCreateHexagon( NULL, self.hexWidth, self.hexHeight );
}
trả về _hexagonPath ;
}
-(void)setHexWidth:(CGFloat)w
{
_hexWidth = w;
CGPathRelease( _hexagonPath );
_hexagonPath = NULL;
}
-(void)setHexHeight:(CGFloat)h
{
_hexHeight = h;
CGPathRelease( _hexagonPath );
_hexagonPath = NULL;
}
-(void)layoutSubviews
{
[ siêu bố cụcSubviews ] ;
Giới hạn CGRect = self.bounds;
bounds.size.height += self.hexHeight * 0.5; // đảm bảo chúng tôi bao gồm hàng cuối cùng;
CGPoint p;
px = CGRectGetMinY(giới hạn);
while( py < CGRectGetMaxY( giới hạn ) )
{
px = CGRectGetMinX(giới hạn);
while( px < CGRectGetMaxX( giới hạn ) )
{
{
Lớp CAShapeLayer * = [Lớp CAShapeLayer];
layer.path = self.hexagonPath;
layer.fillColor = [[ UIColor colorWithHue:(CGFloat)arc4random_uniform( 100 ) / 256.0 độ bão hòa:1.0 độ sáng:1.0 alpha:1.0 ] CGColor ] ;
layer.position = [ lớp pixelAlignedPositionForPoint:p ] ;
[ self.layer addSublayer:layer ] ;
}
CGPoint p2 = { px + self.hexWidth * 0,75f, py + self.hexHeight * 0,5f };
if ( p2.y < CGRectGetMaxY( giới hạn )) // không có hình lục giác không cần thiết
{
Lớp CAShapeLayer * = [Lớp CAShapeLayer];
layer.path = self.hexagonPath;
layer.fillColor = [[ UIColor colorWithHue:(CGFloat)arc4random_uniform( 256 ) / 256.0 độ bão hòa:1.0 độ sáng:1.0 alpha:1.0 ] CGColor ] ;
layer.position = [ lớp pixelAlignedPositionForPoint:p2 ] ;
[ self.layer addSublayer:layer ] ;
}
px += self.hexWidth * 1.5;
}
py += self.hexHeight;
}
}
@kết thúc
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] giới hạn]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
HexagonsView * view = [[ HexagonsView phân bổ ] initWithFrame:self.window.bounds ] ;
view.hexHeight = 100.0f;
view.hexWidth = 100.0f;
[ self.window addSubview:view ];
[self.window makeKeyAndVisible];
return YES;
}
@kết thúc
Về ios - Cách vẽ các đường dẫn/hình được tô bằng các màu khác nhau, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/17415730/
Tôi đã học lập trình SDL 2D được một thời gian và bây giờ tôi muốn tạo một chương trình sử dụng SDL và OpenGL cùng nhau. Tôi thiết lập nó như sau: SDL_Init(SDL_INIT_VIDEO); window = SDL_Cr
Cố gắng tìm danh sách các loại mục khác nhau có thể được sử dụng trong các ô từ các loại phép chiếu mẫu khác nhau:
Tôi đang cố gắng vẽ GIF bằng API đồ họa Java nhưng tôi không thể vẽ thành công GIF bằng mã bên dưới. Chỉ hình ảnh hoặc hình thu nhỏ đầu tiên của GIF được vẽ chứ không được phát. public void PaintCompon
Tôi hiện đang sử dụng JFrame và đang cố vẽ một hình chữ nhật, nhưng tôi không biết cách thực thi mã vẽ (Graphics g), làm cách nào để lấy đối tượng Đồ họa? gói com.raggaer.frame;
Mới tham gia lĩnh vực này mong nhận được sự giúp đỡ. Tôi có lớp "Missile.java" nơi tôi vẽ nội dung. Tôi muốn vẽ một ImageView, tôi đang sử dụng đoạn mã sau: ImageView v = (ImageView)
Dưới đây là ví dụ về hình tròn và đây là mã JavaScript của tôi. Câu trả lời hay nhất Giả sử RandomColor của bạn đúng, bạn chỉ cần: xóa context.clearR khỏi canvas.onclick
Tôi đang gặp sự cố khi vẽ và chia tỷ lệ ImageView. Xin hãy giúp tôi.. Khi tôi vẽ thứ gì đó rồi kéo hoặc chia tỷ lệ hình ảnh - bản vẽ vẫn giữ nguyên vị trí như bạn có thể thấy trong ảnh chụp màn hình. Và tôi có thể chỉ cần vẽ lên hình ảnh và tôi có thể chia tỷ lệ và kéo hình ảnh này.
Chúng ta có thể vẽ hình ảnh và văn bản bên ngoài biểu mẫu... Ý tôi là theo nghĩa đen... Tôi biết đó là một câu hỏi ngu ngốc để hỏi nhưng liệu chúng ta có thể... Câu trả lời hay nhất Bạn có thể thực hiện việc này bằng cách tạo một biểu mẫu và gán cho nó thuộc tính TransparentColor Đặt làm màu nền để "làm
Tôi nhận được 3 cảnh báo phân bổ đối tượng trong quá trình vẽ/bố cục super.onDraw(canvas); canvas.drawColor(Color.WHITE); Paint textPaint = new Pai;
Tôi có khung dữ liệu chuỗi thời gian mẫu: df = pd.DataFrame({'year':'1990','1991','1992','1993','1994','1995','1996',
Tôi đang cố gắng tìm ra một cách gọn gàng để vẽ tất cả các cột trong GridView trong khung dữ liệu R. Vấn đề là tôi có cả giá trị rời rạc và số trong khung dữ liệu của mình. Để đơn giản, chúng ta có thể sử dụng tập dữ liệu mẫu do R cung cấp có tên là iris. Tôi sẽ sử dụng par(mf
Tôi có data.frame bao gồm 10 cột và 50 hàng. Tôi sử dụng hàm áp dụng để tính hàm mật độ theo từng cột. Bây giờ tôi muốn vẽ mật độ mà tôi đã tính toán chỉ trong một lần. Nói cách khác, thay vì vẽ đồ thị...plot(den[[1]]) plo
Tôi muốn biết làm thế nào chúng ta có thể vẽ các cá nhân bên ngoài thành phần thứ nhất và thứ hai như thế này: Câu trả lời hay nhất Cách này có thể hiệu quả: pc.cr <- princomp(USArrests, cor = TRUE) pair(pc.cr$ lo
Tôi chưa quen với Pandas và matplotlib và muốn lập kế hoạch mùa DataFrame này để giành chiến thắng trong các trận đấu đồng đội pct_won 0 20
Tôi đang cố gắng viết một vòng lặp for cho một ô con distplot. Tôi có một khung dữ liệu với nhiều cột có độ dài khác nhau. (không bao gồm giá trị NaN) fig = make_subplots(rows=len(asse
Tôi muốn tạo một âm mưu 3d với mật độ. Trước tiên, tôi sử dụng mật độ hàm để tạo biểu đồ 2D cho các giá trị x cụ thể, sau đó hàm tạo mật độ và đặt chúng vào biến y. Bây giờ tôi có bộ giá trị x thứ hai và đưa chúng vào hàm mật độ một lần nữa, khi đó tôi có
Tất cả, tôi đang nghiên cứu chỉ mục toàn cầu về tất cả các đường mòn MTB. Tôi là người yêu thích Python, vì vậy đối với tất cả các bước liên quan, tôi cố gắng sử dụng các mô-đun Python. Tôi có thể nhận được mối quan hệ từ API OSM Overpass như thế này: từ O
Tôi đang sử dụng máy vectơ hỗ trợ từ gói e1071 để phân loại dữ liệu của mình và muốn trực quan hóa cách máy thực sự thực hiện việc phân loại. Tuy nhiên, khi sử dụng hàmplot.svm sẽ xảy ra lỗi chưa được khắc phục. Tập lệnh: thư viện("e1071") d
Tôi đã tạo biểu đồ sau, được tạo bằng các đối tượng xts. Mã tôi sử dụng là lô đơn giản(graphTS1$CCLL, type = "l", las = 2, ylab = "(c)\nCC for I
Khi vẽ sơ đồ trạng thái, làm sao bạn biết trạng thái nào cần đặt vào hộp và trạng thái nào sẽ sử dụng cho mũi tên chuyển tiếp? Tôi nhận thấy rằng sự chuyển tiếp cũng là trạng thái. Tôi đang xem Hình 1 trên trang này: Chuyển đổi câu trả lời hay nhất không phải là trạng thái. Chuyển tiếp là sự chuyển động của một vật từ trạng thái này sang trạng thái khác
Tôi là một lập trình viên xuất sắc, rất giỏi!