0
- (void)drawRect:(NSRect)rectをオーバーライドしたNSImageViewのメソッドを使用して、imageViewのデフォルトイメージを描画する方法imageviewの中心にあるimageviewにデフォルト画像を描画するにはどうすればいいですか?
- (void)drawRect:(NSRect)rectをオーバーライドしたNSImageViewのメソッドを使用して、imageViewのデフォルトイメージを描画する方法imageviewの中心にあるimageviewにデフォルト画像を描画するにはどうすればいいですか?
最初にイメージビューのイメージをデフォルトイメージに設定してから、後でそれを変更しますか?
はい。それは一つの方法でした。私は次のコードを使用しました。
// Drawing
- (void)drawRect:(NSRect)rect
{
if([self image])
{
[[NSColor grayColor] set];
NSRectFill(rect);
//ImageView Bounds and Size
NSRect vBounds = [self bounds];
NSSize vSize = vBounds.size;
//Get the size and origin of default image set to imageView
NSRect imageRect;
imageRect.size = [[self image] size];
imageRect.origin = NSZeroPoint;
//Create a preview image
NSSize previewSize = NSMakeSize([self image].width/4.0, [self image].height/4.0);
NSImage *previewImage = [[NSImage alloc] initWithSize:previewSize];
//Get the point where the preview image needs to be draw
NSRect newRect;
newRect.origin.x = vSize.width/2-previewSize.width/2;
newRect.origin.y = vSize.height/2-previewSize.height/2;
newRect.size = [previewImage size];
//Draw preview image in imageView
[[self image] drawInRect:newRect fromRect:imageRect operation:NSCompositeSourceOver fraction:1.0];
[previewImage release];
}
}
たとえば、画像ビューに「ここに画像を落とす」というグラフィックを表示したい場合は、すばらしい解決策ではありません。初期値がnilであるか、ユーザーが現在のイメージを削除したときにイメージビューのイメージを監視してカスタムグラフィックスをスワップすることでそれを行うことができますが、drawRectに追加するだけの作業は少ないようです。 –