C++'ta Metin Nasıl Biçimlendirilir
Aspose.Slides FOSS for C++ provides fine-grained text formatting through the PortionFormat sınıf. A Portion metnin en küçük bağımsız birimidir; bir paragrafta tek bir biçimlendirme çalışmasına karşılık gelir. Bu kılavuz, bir sunumdaki metne kalın, italik, yazı tipi boyutu ve renk biçimlendirmesinin nasıl uygulanacağını gösterir.
Adım Adım Kılavuz
Adım 1: Kütüphaneyi Derleyin ve Bağlayın
git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp && mkdir build && cd build
cmake .. && cmake --build .Adım 2: Metin Çerçevesi Olan Bir Şekil Ekleyin
Metni biçimlendirmeden önce, bir şekil ekleyin ve metin içeriğini şu şekilde ayarlayın shape.text_frame()->set_text().
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 500, 150);
shape.text_frame()->set_text("Default text: will be formatted");
prs.save("output.pptx", asf::SaveFormat::PPTX);
return 0;
}Adım 3: TextFrame’e Erişin
shape.text_frame() şeklinin bir işaretçisini döndürür TextFrame. Kullan -> üzerinde metodları çağırmak için.
auto* tf = shape.text_frame(); // pointer to the shape's text frame
tf->set_text("your text here");Bir TextFrame içerir Paragraph nesneler (tf->paragraphs()). Her Paragraph içerir Portion nesneler (paragraph.portions()).
Adım 4: Kalın ve İtalik Biçimlendirmeyi Uygulayın
Kullan portion_format().set_font_bold() ve portion_format().set_font_italic(). Bu yöntemler kabul eder NullableBool::TRUE, NullableBool::FALSE, ya da NullableBool::NOT_DEFINED (ana daldan miras al).
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 500, 150);
shape.text_frame()->set_text("Bold and italic text");
auto* tf = shape.text_frame();
auto& fmt = tf->paragraphs()[0].portions()[0].portion_format();
fmt.set_font_bold(asf::NullableBool::TRUE);
fmt.set_font_italic(asf::NullableBool::TRUE);
prs.save("bold-italic.pptx", asf::SaveFormat::PPTX);
return 0;
}Adım 5: Yazı Tipi Boyutunu ve Rengini Ayarlayın
Ayarla portion_format().set_font_height() boyut için (puan cinsinden) ve kullan fill_format() renk için.
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 500, 150);
shape.text_frame()->set_text("Large corporate-blue heading");
auto* tf = shape.text_frame();
auto& fmt = tf->paragraphs()[0].portions()[0].portion_format();
fmt.set_font_height(32); // 32pt font
fmt.set_font_bold(asf::NullableBool::TRUE);
fmt.fill_format().set_fill_type(asf::FillType::SOLID);
fmt.fill_format().solid_fill_color().set_color(
asf::Color::from_argb(255, 0, 70, 127));
prs.save("colored-text.pptx", asf::SaveFormat::PPTX);
return 0;
}Color::from_argb(alpha, red, green, blue) her kanal için 0-255 değerlerini kabul eder.
Adım 6: Tek Bir Paragrafta Birden Çok Bölüm
Tek bir paragraf, farklı biçimlendirmelere sahip birden fazla bölüm içerebilir. Yeni bir Portion paragrafın portions() koleksiyonuna:
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 600, 100);
shape.text_frame()->set_text(""); // start with empty text
auto* tf = shape.text_frame();
auto& paragraph = tf->paragraphs()[0];
// First portion: normal text
auto& portion1 = paragraph.portions()[0];
portion1.set_text("Normal text followed by ");
portion1.portion_format().set_font_height(20);
// Second portion: bold red text
asf::Portion portion2;
portion2.set_text("bold red text");
portion2.portion_format().set_font_height(20);
portion2.portion_format().set_font_bold(asf::NullableBool::TRUE);
portion2.portion_format().fill_format().set_fill_type(asf::FillType::SOLID);
portion2.portion_format().fill_format().solid_fill_color().set_color(
asf::Color::from_argb(255, 200, 0, 0));
paragraph.portions().add(portion2);
prs.save("mixed-format.pptx", asf::SaveFormat::PPTX);
return 0;
}Yaygın Sorunlar ve Çözümler
Renk ayarlandıktan sonra bile metin siyah görünüyor
Güvence sağlayın fill_format().set_fill_type(FillType::SOLID) renk atanmasından önce ayarlanır. Dolgu türü ayarlanmadan, renk değişikliği etkisiz kalabilir.
NullableBool::TRUE vs true
portion_format().set_font_bold() bekler NullableBool::TRUE, C++ değil true. Geçmek true doğrudan derlenmez veya aşırı yükleme çözümlemesine bağlı olarak tanımsız davranışa sahip olabilir.
Kaydedilen dosyada yazı tipi görünmüyor.
Bu set_latin_font() metod Latin yazı tipi ailesini ayarlar. Ayarlanmazsa, sunum teması yazı tipi kullanılır. Özel yazı tipleri gömülmüş olmalı veya görüntüleme makinesinde mevcut olmalıdır.
Sık Sorulan Sorular
Yazı tipi ailesini nasıl değiştiririm?
Ayarla portion_format().set_latin_font():
fmt.set_latin_font(asf::FontData("Arial"));FontData yazı tipi ailesi adını bir dize olarak kabul eder.
Paragraf hizalamasını nasıl ayarlarım?
Kullan paragraph_format().set_alignment():
tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);Desteklenen değerler: LEFT, CENTER, RIGHT, JUSTIFY.
Satır aralığını nasıl ayarlarım?
Kullan paragraph_format().set_space_before() (paragraftan önce puanlar) veya paragraph_format().set_space_after() (paragraftan sonra puanlar):
tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6); // 6pt after