سؤال

لدي NSScrollView الذي يحتوي على صورة كبيرة داخلها. أحاول رسم صورة ImageView بشكل برمجي عبر ImageView داخل NSScrollView. فكر في الأمر مثل هذا. لدي خريطة عالمية (nsimageview) داخل NSScrollView. يختار المستخدم بلدًا من قائمة المنسدلة وأحصل على نقاط (x ، y) لهذا البلد في العالم (nsimageview). الآن يجب أن أرسم صورة صغيرة (مؤشر أحمر) على الخريطة العالمية عند النقاط المعطاة (x ، y). المشكلة هي أنه عندما أرسم الصورة ، يتم رسمها في المنطقة الخطأ.

    self.pimg = [[NSImageView alloc] initWithFrame:NSMakeRect (0, 0, 30, 30)];
    [self.pimg setImage: image];
//self.pimg is the pointing image to be drawn over the worldmap
    [self.pimg setImageFrameStyle:NSImageFrameNone];
    [self.pimg setImageScaling:NSOnState];
//
    [self.scrollView.contentView addSubview:self.pimg];

لقد دخلت (0،0) كـ x ، y للتحقق مما إذا كان يتم رسمه على الأصل. يتم رسمها في مكان ما في منتصف الشاشة.

تعديل: يتم رسمها في أصل Scrollview.how يمكنني ترجمة هذه النقاط إلى نقاط الصورة الكبيرة؟

هل كانت مفيدة؟

المحلول

أضف صورتك باعتبارها نظرة فرعية إلى WorldMapimage (عرض صورة كبير). سيؤدي هذا إلى ترجمة نقاط الصورة وفقًا لصورة الخريطة العالمية.

 self.pimg = [[NSImageView alloc] initWithFrame:NSMakeRect (0, 0, 30, 30)];
 [self.pimg setImage: image];
//self.pimg is the pointing image to be drawn over the worldmap
  [self.pimg setImageFrameStyle:NSImageFrameNone];
  [self.pimg setImageScaling:NSOnState];

  //Updated line of code
  [self.largeImageView addSubview:self.pimg]; //Add subview to the largeimageview(world map)

نصائح أخرى

مع المعلومات التي قدمتها من الصعب قولها ولكن يمكنك محاولة استخدام NSView طريقة

- (NSRect)convertRect:(NSRect)aRect toView:(NSView *)aView

لذا افترض أن خريطة العالم الخاصة بك هي نظرة فرعية على Scrollview الخاص بك ، ربما ...

[scrollview convertRect:self.pimg.frame toView:worldmap]

والتي ستعيد إطارًا في النظام المرجعي للنقطة لعرض WorldMap.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top