Primitives

Primitives

Bu kılavuz, API içinde geometri ve renk verilerini taşıyan, pratikte değişmez küçük değer tiplerini kapsar: 2D ve 3D noktalar, dikdörtgenler, dönüşüm matrisleri ve renk değerleri. Basit iş akışlarında genellikle bu tipleri adlarıyla doğrudan içe aktarmazsınız — bunlar, açıklamalar, görüntü yerleşimleri ve 3D görünümler gibi üst-seviye nesnelerde özellik tipi olarak ortaya çıkar — ancak biçimlerini bilmek, bu nesnelerin özelliklerini okumayı ve oluşturmayı kolaylaştırır.


Noktalar: Point ve Point3D

Point, x ve y float özelliklerine sahip basit bir 2D koordinattır. Point3D, Point3D(x, y, z) olarak oluşturulan ve x, y ve z float özelliklerini sunan 3D karşılığıdır. Point, GradientAxialShading.start / end için kullanılan tiptir; Matrix3D tabanlı dönüşümler ve 3D görünümler, Point3D tarafından tanımlanan aynı koordinat uzayında çalışır.


Rectangles

Rectangle(x, y, width, height), bir konum ve boyutu tanımlar ve ayrıca hesaplanmış left, bottom ve right float özelliklerini, x, y, width ve height ile birlikte sunar. Rectangle, PDF3DAnnotation.rect arkasındaki tiptir; böylece 3D açıklamanın sayfa üzerindeki sınırları, API içindeki diğer tüm dikdörtgenler gibi aynı şekil üzerinden okunur ve ayarlanır.


Dönüşüm Matrisleri: Matrix ve Matrix3D

Matrix altı float bileşeni olarak bir 2D afin dönüşümü tutar — a, b, c, d, e, f — ve iki yöntem sağlar: translate(x, y) yerinde bir çevirme uygulamak için, ve multiply(other) başka bir Matrix ile birleştirmek için, sonuçta oluşan Matrix döndürür.

Matrix3D 3D karşılığıdır: (m11 ile m33 arasındaki) bir 3x3 dönüş/ölçek bloğu ve bir dx, dy, dz çevirme bileşeni, hiç argüman olmadan (Matrix3D()) oluşturulur ve özellikleri ayarlanarak doldurulur. PDF3DView.ctm Matrix3D | None tipiyle tanımlanmıştır — kaydedilmiş bir 3D görünüm için mevcut dönüşüm matrisi.


İpuçları ve En İyi Uygulamalar

  • Rectangle, Point ve Point3D öğelerini belgelenen sırada konumsal argümanlarla (x, y[, z] / x, y, width, height) oluşturun — bu tipler sadece düz float alır, yalnızca anahtar kelime argümanları kabul etmez.
  • Dönüşümleri birleştirmek için Matrix.multiply() kullanın, altı a–f bileşenini elle birleştirmek yerine.
  • Bir özelliğin tipi isteğe bağlı olduğunda (örneğin PDF3DAnnotation.background_color: Color | None veya PDF3DView.ctm: Matrix3D | None), onun iç içe geçmiş özelliklerini okumadan önce None olup olmadığını kontrol edin.
  • Desen renk uzayı olarak iki renkli lineer bir degrade gerektiğinde yalnızca GradientAxialShading kullanın; düz, tek renk için doğrudan Color kullanın.
  • Rectangle‘ın left, bottom ve right özellikleri x, y ve width/height öğelerinden türetilir — bunları bağımsız bir durum yerine aynı dikdörtgenin kullanışlı bir görünümü olarak değerlendirin.

Yaygın Sorunlar

SorunNedenDüzeltme
Dikdörtgen ya da nokta koordinatları takas edilmiş ya da yanlış ölçeklendirilmiş görünüyorKonumsal argümanlar Rectangle(x, y, width, height) ya da Point3D(x, y, z) için yanlış sırayla gönderildiArgüman sırasını kurucu imzasına karşı iki kez kontrol edin — bu tiplerde anahtar kelime-sadece zorlaması yoktur
AttributeError bir renk ya da matris özelliği okunurkenİsteğe bağlı bir alandan gelen None değeri üzerinde erişilen özellik (ör. background_color, ctm)Değerin None olmadığından emin olun, ardından iç içe özelliklere erişin
Gradyan tek bir düz renk olarak görüntüleniyorGradientAxialShading.start ve end Point değerleri aynı veya çok yakınstart ve end‘in, amaçlanan gradyan ekseni boyunca görsel olarak farklı iki noktayı işaret ettiğinden emin olun

FAQ

Normal kullanımda Point, Rectangle veya Matrix’i doğrudan içe aktarmam gerekiyor mu?

Genellikle hayır — bunlarla en sık bir özelliğin tipi (örneğin PDF3DAnnotation.rect veya PDF3DView.ctm) olarak karşılaşırsınız, sıfırdan oluşturmak yerine; ancak bağımsız bir değere ihtiyaç duyduğunuzda doğrudan oluşturmanızı engelleyecek bir şey yok.

Color ile ColorPrimitive arasındaki fark nedir?

Color, RGB tarzı kanal verilerini ve degrade doldurmalar için isteğe bağlı bir pattern_color_space taşır. ColorPrimitive, yalnızca bir transparency değeri ortaya çıkaran çok daha küçük bir tiptir.

Matrix ile iki dönüşümü nasıl birleştiririm?

matrix_a.multiply(matrix_b)‘ı çağırın, bu birleşik Matrix‘i döndürür. Tam bir matris çarpımı oluşturmadan basit bir çeviri için translate(x, y)‘ı kullanın.

Matrix3D, 3D açıklamaların dışında herhangi bir yerde kullanılıyor mu?

Bu küme içinde, Matrix3D, PDF3DView.ctm tipinde görünür — kaydedilmiş bir 3D görünümle ilişkili mevcut dönüşüm matrisi.


API Reference Özeti

Sınıf/YöntemAçıklama
Point2D koordinat (x, y float özellikleri)
Point3D3B koordinat (x, y, z float özellikleri)
RectanglePozisyon ve boyut (x, y, width, height, ayrıca hesaplanan left, bottom, right)
Matrix2B affine dönüşüm (a–f bileşen); translate / multiply yöntemleri
Matrix3D3B dönüşüm matrisi (m11–m33 döndürme/ölçek bloğu, dx/dy/dz öteleme)
Colorİsteğe bağlı pattern_color_space degrade doldurması ile renk değeri
ColorPrimitiveMinimal renk ilkel nesnesi transparency gösterir
GradientAxialShadingİki Color değeri arasında iki Point uç nokta boyunca eksenel (lineer) degrade

Ayrıca Bakınız

 Türkçe