مدیریت گرههای شکل SmartArt در ارائهها با استفاده از Java
مروری کلی
گرافیکهای SmartArt در ارائههای PowerPoint از طریق گرههایی که متن دارند و ساختار نمودار را تعریف میکنند، سازماندهی میشوند. Aspose.Slides به شما امکان میدهد بهصورت برنامهنویسی با این گرههای SmartArt کار کنید: افزودن گرهها و گرههای فرزند جدید، درج گرههای فرزند در موقعیت خاص، دسترسی به گرههای موجود و خواندن متن، سطح و موقعیت آنها.
این مقاله نحوه مدیریت گرههای شکل SmartArt را توضیح میدهد. نشان میدهد چگونه گرهها را حذف کنید، با گرههای فرزند بر اساس شاخص یا موقعیت کار کنید، یک گره دستیار را به گره عادی تغییر دهید، موقعیت، اندازه و چرخش اشکال گرههای SmartArt را تنظیم کنید، فرمت پرکننده گره را تنظیم کنید و تصویر بندانگشتی یک گره فرزند SmartArt را تولید کنید.
افزودن یک گره SmartArt
Aspose.Slides for Java سادهترین API برای مدیریت اشکال SmartArt را به آسانترین شکل ارائه داده است. کد نمونه زیر به شما کمک میکند گره و گره فرزند را داخل شکل SmartArt اضافه کنید.
- یک نمونه از کلاس Presentation ایجاد کنید و ارائهای را که شامل شکل SmartArt است بارگذاری کنید.
- با استفاده از شاخص آن، به اسلاید اول دسترسی پیدا کنید.
- از طریق همهٔ اشکال داخل اسلاید اول پیمایش کنید.
- بررسی کنید آیا شکل از نوع SmartArt است و در صورت بودن، شکل انتخابی را به SmartArt تبدیل (typecast) کنید.
- در مجموعه گرههای SmartArt shape NodeCollection، یک Add a new Node اضافه کنید و متن را در TextFrame تنظیم کنید.
- حالا یک Child Node در گره SmartArt تازه اضافه شده Add کنید و متن را در TextFrame تنظیم کنید.
- ارائه را ذخیره کنید.
// بارگذاری ارائه مورد نظر
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try {
// از طریق تمام اشکال داخل اسلاید اول پیمایش کنید
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// بررسی کنید آیا شکل از نوع SmartArt است
if (shape instanceof SmartArt)
{
// تبدیل (typecast) شکل به SmartArt
SmartArt smart = (SmartArt) shape;
// افزودن یک گره جدید SmartArt
SmartArtNode TemNode = (SmartArtNode) smart.getAllNodes().addNode();
// افزودن متن
TemNode.getTextFrame().setText("Test");
// افزودن گره فرزند جدید به گره والد. این گره در انتهای مجموعه اضافه خواهد شد
SmartArtNode newNode = (SmartArtNode) TemNode.getChildNodes().addNode();
// افزودن متن
newNode.getTextFrame().setText("New Node Added");
}
}
// ذخیرهسازی ارائه
pres.save("AddSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
افزودن گره SmartArt در موقعیت خاص
در کد نمونهٔ زیر نحوه افزودن گرههای فرزند متعلق به گرههای مختلف شکل SmartArt در موقعیت خاص را شرح میدهیم.
- یک نمونه از کلاس Presentation ایجاد کنید.
- با استفاده از شاخص، به اسلاید اول دسترسی پیدا کنید.
- در اسلاید مورد دسترسی، یک شکل SmartArt از نوع StackedList اضافه کنید.
- به اولین گره در شکل SmartArt اضافهشده دسترسی پیدا کنید.
- حالا Child Node را برای Node انتخابشده در موقعیت ۲ اضافه کنید و متن آن را تنظیم کنید.
- ارائه را ذخیره کنید.
// ایجاد یک نمونه ارائه
Presentation pres = new Presentation();
try {
// دسترسی به اسلاید ارائه
ISlide slide = pres.getSlides().get_Item(0);
// افزودن IShape از نوع Smart Art
ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
// دسترسی به گره SmartArt با شاخص 0
ISmartArtNode node = smart.getAllNodes().get_Item(0);
// افزودن گره فرزند جدید در موقعیت 2 در گره والد
SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).addNodeByPosition(2);
// افزودن متن
chNode.getTextFrame().setText("Sample Text Added");
// ذخیرهسازی ارائه
pres.save("AddSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
دسترسی به یک گره SmartArt
کد نمونهٔ زیر به شما کمک میکند به گرههای داخل شکل SmartArt دسترسی پیدا کنید. توجه داشته باشید که شما نمیتوانید LayoutType را تغییر دهید زیرا فقط در زمان افزودن شکل SmartArt قابل تنظیم است و فقط برای خواندن است.
- یک نمونه از کلاس Presentation ایجاد کنید و ارائهای را که شامل شکل SmartArt است بارگذاری کنید.
- با استفاده از شاخص، به اسلاید اول دسترسی پیدا کنید.
- از طریق همهٔ اشکال داخل اسلاید اول پیمایش کنید.
- بررسی کنید آیا شکل از نوع SmartArt است و در صورت بودن، شکل انتخابی را به SmartArt تبدیل کنید.
- از طریق همهٔ Nodes داخل شکل SmartArt پیمایش کنید.
- اطلاعاتی مانند موقعیت گره SmartArt، سطح و متن را دسترسی و نمایش دهید.
// ایجاد نمونه کلاس Presentation
Presentation pres = new Presentation("SmartArtShape.pptx");
try {
// دریافت اسلاید اول
ISlide slide = pres.getSlides().get_Item(0);
// پیمایش از طریق تمام اشکال داخل اسلاید اول
for (IShape shape : slide.getShapes())
{
// بررسی کنید آیا شکل از نوع SmartArt است
if (shape instanceof ISmartArt)
{
// تبدیل (typecast) شکل به SmartArt
ISmartArt smart = (ISmartArt) shape;
// پیمایش از طریق تمام گرههای داخل SmartArt
for (int i = 0; i < smart.getAllNodes().size(); i++)
{
// دسترسی به گره SmartArt با شاخص i
SmartArtNode node = (SmartArtNode) smart.getAllNodes().get_Item(i);
// چاپ پارامترهای گره SmartArt
System.out.print(node.getTextFrame().getText() + " " + node.getLevel() + " " + node.getPosition());
}
}
}
} finally {
if (pres != null) pres.dispose();
}
دسترسی به یک گره فرزند SmartArt
کد نمونهٔ زیر به شما کمک میکند گرههای فرزند متعلق به گرههای مختلف شکل SmartArt را دسترسی داشته باشید.
- یک نمونه از کلاس Presentation ایجاد کنید و ارائهای را که شامل شکل SmartArt است بارگذاری کنید.
- با استفاده از شاخص، به اسلاید اول دسترسی پیدا کنید.
- از طریق همهٔ اشکال داخل اسلاید اول پیمایش کنید.
- بررسی کنید آیا شکل از نوع SmartArt است و در صورت بودن، شکل انتخابی را به SmartArt تبدیل کنید.
- از طریق همهٔ Nodes داخل شکل SmartArt پیمایش کنید.
- برای هر Node انتخابشده، از طریق تمام Child Nodes داخل گره خاص پیمایش کنید.
- اطلاعاتی مانند موقعیت Child Node، سطح و متن را دسترسی و نمایش دهید.
// ایجاد نمونه کلاس Presentation
Presentation pres = new Presentation("AccessChildNodes.pptx");
try {
// دریافت اسلاید اول
ISlide slide = pres.getSlides().get_Item(0);
// پیمایش از طریق تمام اشکال داخل اسلاید اول
for (IShape shape : slide.getShapes())
{
// بررسی کنید آیا شکل از نوع SmartArt است
if (shape instanceof ISmartArt)
{
// تبدیل (typecast) شکل به SmartArt
ISmartArt smart = (ISmartArt) shape;
// پیمایش از طریق تمام گرههای داخل SmartArt
for (int i = 0; i < smart.getAllNodes().size(); i++)
{
// دسترسی به گره SmartArt با شاخص i
SmartArtNode node0 = (SmartArtNode) smart.getAllNodes().get_Item(i);
// پیمایش از طریق گرههای فرزند در گره SmartArt با شاخص i
for (int j = 0; j < node0.getChildNodes().size(); j++)
{
// دسترسی به گره فرزند در گره SmartArt
SmartArtNode node = (SmartArtNode) node0.getChildNodes().get_Item(j);
// چاپ پارامترهای گره فرزند SmartArt
System.out.print("j = " + j + ", Text = " + node.getTextFrame().getText() + ", Level = " + node.getLevel() + ", Position = " + node.getPosition());
}
}
}
}
} finally {
if (pres != null) pres.dispose();
}
دسترسی به یک گره فرزند SmartArt در موقعیت خاص
در این مثال، نحوه دسترسی به گرههای فرزند در موقعیت خاصی از گرههای مربوط به شکل SmartArt را میآموزید.
- یک نمونه از کلاس Presentation ایجاد کنید.
- با استفاده از شاخص، به اسلاید اول دسترسی پیدا کنید.
- یک شکل SmartArt از نوع StackedList اضافه کنید.
- به شکل SmartArt افزودهشده دسترسی پیدا کنید.
- گرهای با شاخص ۰ برای شکل SmartArt دسترسی یافته را دریافت کنید.
- حالا با استفاده از متد get_Item()، Child Node در موقعیت ۱ برای گره SmartArt دسترسی یافته را دریافت کنید.
- اطلاعاتی مانند موقعیت Child Node، سطح و متن را دسترسی و نمایش دهید.
// ایجاد نمونه ارائه
Presentation pres = new Presentation();
try {
// دسترسی به اسلاید اول
ISlide slide = pres.getSlides().get_Item(0);
// افزودن شکل SmartArt در اسلاید اول
ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
// دسترسی به گره SmartArt با شاخص 0
ISmartArtNode node = smart.getAllNodes().get_Item(0);
// دسترسی به گره فرزند در موقعیت 1 در گره والد
int position = 1;
SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).get_Item(position);
// چاپ پارامترهای گره فرزند SmartArt
System.out.print("Text = " + chNode.getTextFrame().getText() + ", Level = " + chNode.getLevel() + ", Position = " + chNode.getPosition());
} finally {
if (pres != null) pres.dispose();
}
حذف یک گره SmartArt
در این مثال، نحوه حذف گرههای داخل شکل SmartArt را میآموزید.
- یک نمونه از کلاس Presentation ایجاد کنید و ارائهای را که شامل شکل SmartArt است بارگذاری کنید.
- با استفاده از شاخص، به اسلاید اول دسترسی پیدا کنید.
- از طریق همهٔ اشکال داخل اسلاید اول پیمایش کنید.
- بررسی کنید آیا شکل از نوع SmartArt است و در صورت بودن، شکل انتخابی را به SmartArt تبدیل کنید.
- بررسی کنید آیا SmartArt بیش از ۰ گره دارد.
- گره SmartArt مورد نظر برای حذف را انتخاب کنید.
- حالا گره انتخابشده را با استفاده از متد RemoveNode حذف کنید.
- ارائه را ذخیره کنید.
// بارگذاری ارائه مورد نظر
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
// پیمایش از طریق تمام اشکال داخل اسلاید اول
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// بررسی کنید آیا شکل از نوع SmartArt است
if (shape instanceof ISmartArt)
{
// تبدیل شکل به SmartArt
ISmartArt smart = (ISmartArt) shape;
if (smart.getAllNodes().size() > 0)
{
// دسترسی به گره SmartArt با شاخص 0
ISmartArtNode node = smart.getAllNodes().get_Item(0);
// حذف گره انتخابشده
smart.getAllNodes().removeNode(node);
}
}
}
// ذخیرهسازی ارائه
pres.save("RemoveSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
حذف یک گره SmartArt از موقعیت خاص
در این مثال، نحوه حذف گرههای داخل شکل SmartArt در موقعیت خاصی را میآموزید.
- یک نمونه از کلاس Presentation ایجاد کنید و ارائهای را که شامل شکل SmartArt است بارگذاری کنید.
- با استفاده از شاخص، به اسلاید اول دسترسی پیدا کنید.
- از طریق همهٔ اشکال داخل اسلاید اول پیمایش کنید.
- بررسی کنید آیا شکل از نوع SmartArt است و در صورت بودن، شکل انتخابی را به SmartArt تبدیل کنید.
- گره شکل SmartArt در شاخص ۰ را انتخاب کنید.
- حالا بررسی کنید آیا گره SmartArt انتخابشده بیش از ۲ گره فرزند دارد.
- حالا گره در Position 1 را با استفاده از متد RemoveNode حذف کنید.
- ارائه را ذخیره کنید.
// بارگذاری ارائه مورد نظر
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
// پیمایش از طریق تمام اشکال داخل اسلاید اول
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// بررسی کنید آیا شکل از نوع SmartArt است
if (shape instanceof SmartArt)
{
// تبدیل شکل به SmartArt
SmartArt smart = (SmartArt) shape;
if (smart.getAllNodes().size() > 0)
{
// دسترسی به گره SmartArt با شاخص 0
ISmartArtNode node = smart.getAllNodes().get_Item(0);
if (node.getChildNodes().size() >= 2)
{
// حذف گره فرزند در موقعیت 1
(node.getChildNodes()).removeNode(1);
}
}
}
}
// ذخیرهسازی ارائه
pres.save("RemoveSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
تنظیم موقعیت سفارشی برای یک گره فرزند در یک شیء SmartArt
اکنون Aspose.Slides for Java از تنظیم خصوصیات X (https://reference.aspose.com/slides/fa/java/com.aspose.slides/IShape#setX-float-) و Y (https://reference.aspose.com/slides/fa/java/com.aspose.slides/IShape#setY-float-) برای SmartArtShape پشتیبانی میکند. قطعه کد زیر نشان میدهد چگونه موقعیت، اندازه و چرخش سفارشی برای SmartArtShape تنظیم شود؛ همچنین توجه داشته باشید که افزودن گرههای جدید موجب بازمحاسبهٔ موقعیت و اندازهٔ تمام گرهها میشود. با تنظیمات موقعیت سفارشی، کاربر میتواند گرهها را برحسب نیاز تنظیم کند.
// ایجاد نمونه کلاس Presentation
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try{
ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(20, 20, 600, 500, SmartArtLayoutType.OrganizationChart);
// جابهجایی شکل SmartArt به موقعیت جدید
ISmartArtNode node = smart.getAllNodes().get_Item(1);
ISmartArtShape shape = node.getShapes().get_Item(1);
shape.setX(shape.getX() + shape.getWidth() * 2);
shape.setY(shape.getY() - shape.getHeight() * 2);
// تغییر پهنای شکل SmartArt
node = smart.getAllNodes().get_Item(2);
shape = node.getShapes().get_Item(1);
shape.setWidth(shape.getWidth() + shape.getWidth() * 2);
// تغییر ارتفاع شکل SmartArt
node = smart.getAllNodes().get_Item(3);
shape = node.getShapes().get_Item(1);
shape.setHeight(shape.getHeight() + shape.getHeight() * 2);
// تغییر چرخش شکل SmartArt
node = smart.getAllNodes().get_Item(4);
shape = node.getShapes().get_Item(1);
shape.setRotation(90);
pres.save("SmartArt.pptx", SaveFormat.Pptx);
}finally {
pres.dispose();
}
بررسی یک گره دستیار
ما از شکل SmartArt زیر برای بررسی در بخشهای مختلف این مقاله استفاده میکنیم.
![]() |
|---|
| Figure: Source SmartArt shape in slide |
در کد نمونهٔ زیر نحوه تشخیص Assistant Nodes در مجموعه گرههای SmartArt و تغییر وضعیت آنها را بررسی میکنیم.
- یک نمونه از کلاس Presentation ایجاد کنید و ارائهای را که شامل شکل SmartArt است بارگذاری کنید.
- با استفاده از شاخص، به اسلاید دوم دسترسی پیدا کنید.
- از طریق همهٔ اشکال داخل اسلاید اول پیمایش کنید.
- بررسی کنید آیا شکل از نوع SmartArt است و در صورت بودن، شکل انتخابی را به SmartArt تبدیل کنید.
- از طریق تمام گرههای داخل شکل SmartArt پیمایش کنید و بررسی کنید آیا آنها Assistant Nodes هستند (https://reference.aspose.com/slides/fa/java/com.aspose.slides/SmartArtNode#isAssistant--).
- وضعیت گره دستیار را به گره عادی تغییر دهید.
- ارائه را ذخیره کنید.
// ایجاد یک نمونه ارائه
Presentation pres = new Presentation("AddNodes.pptx");
try {
// پیمایش از طریق تمام اشکال داخل اسلاید اول
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// بررسی کنید آیا شکل از نوع SmartArt است
if (shape instanceof ISmartArt)
{
// تبدیل شکل به SmartArt
ISmartArt smart = (SmartArt) shape;
// پیمایش از طریق تمام گرههای شکل SmartArt
for (int i = 0; i < smart.getAllNodes().size(); i++)
{
ISmartArtNode node = smart.getAllNodes().get_Item(i);
// بررسی کنید آیا گره یک گره دستیار است
if (node.isAssistant())
{
// تنظیم گره دستیار به false و تبدیل آن به گره عادی
node.isAssistant();
}
}
}
}
// ذخیرهسازی ارائه
pres.save("ChangeAssitantNode.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
![]() |
|---|
| Figure: Assistant Nodes Changed in SmartArt shape inside slide |
تنظیم فرمت پرکنندهٔ گره
Aspose.Slides for Java امکان افزودن اشکال SmartArt سفارشی و تنظیم فرمت پرکنندهٔ آنها را فراهم میکند. این مقاله توضیح میدهد چگونه اشکال SmartArt را ایجاد، دسترسی و فرمت پرکنندهٔ آنها را با استفاده از Aspose.Slides for Java تنظیم کنید.
لطفاً مراحل زیر را دنبال کنید:
- یک نمونه از کلاس Presentation ایجاد کنید.
- با استفاده از شاخص، به یک اسلاید دسترسی پیدا کنید.
- با تنظیم LayoutType، یک شکل SmartArt اضافه کنید.
- برای گرههای شکل SmartArt، FillFormat را تنظیم کنید.
- ارائهٔ تغییر یافته را بهعنوان یک فایل PPTX ذخیره کنید.
// ایجاد نمونه ارائه
Presentation pres = new Presentation();
try {
// دسترسی به اسلاید
ISlide slide = pres.getSlides().get_Item(0);
// افزودن شکل SmartArt و گرهها
ISmartArt chevron = slide.getShapes().addSmartArt(10, 10, 800, 60, SmartArtLayoutType.ClosedChevronProcess);
ISmartArtNode node = chevron.getAllNodes().addNode();
node.getTextFrame().setText("Some text");
// تنظیم رنگ پرکننده گره
for (IShape item : node.getShapes())
{
item.getFillFormat().setFillType(FillType.Solid);
item.getFillFormat().getSolidFillColor().setColor(Color.RED);
}
// ذخیرهسازی ارائه
pres.save("TestSmart.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
تولید تصویر بندانگشتی یک گره فرزند SmartArt
توسعهدهندگان میتوانند با دنبال کردن مراحل زیر، تصویر بندانگشتی گره فرزند یک SmartArt را تولید کنند:
- یک نمونه از کلاس Presentation ایجاد کنید.
- یک SmartArt Add کنید.
- با استفاده از شاخص، به یک گره دسترسی پیدا کنید.
- تصویر بندانگشتی را دریافت کنید.
- تصویر بندانگشتی را در هر قالب تصویری مورد نظر ذخیره کنید.
// ایجاد نمونه کلاس Presentation که فایل PPTX را نمایندگی میکند
Presentation pres = new Presentation();
try {
// افزودن SmartArt
ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicCycle);
// دریافت مرجع یک گره با استفاده از شاخص آن
ISmartArtNode node = smart.getNodes().get_Item(1);
// دریافت تصویر بندانگشتی
IImage slideImage = node.getShapes().get_Item(0).getImage();
// ذخیره تصویر بندانگشتی
try {
slideImage.save("SmartArt_ChildNote_Thumbnail.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
سؤالات متداول
آیا انیمیشن SmartArt پشتیبانی میشود؟
بله. SmartArt بهعنوان یک شکل معمولی در نظر گرفته میشود، بنابراین میتوانید انیمیشنهای استاندارد (ورودی، خروجی، تأکید، مسیرهای حرکتی) را اعمال کنید و زمانبندی را تنظیم کنید. همچنین میتوانید در صورت نیاز، شکلهای داخل گرههای SmartArt را نیز انیمیت کنید.
چگونه میتوانم یک SmartArt خاص را در اسلاید بهدست آورم اگر شناسه داخلی آن ناشناخته باشد؟
با اختصاص و جستجو بر اساس متن جایگزین میتوانید آن را پیدا کنید. تنظیم AltText متمایز بر روی SmartArt به شما اجازه میدهد بهصورت برنامهنویسی بدون وابستگی به شناسههای داخلی آن را بیابید.
آیا ظاهر SmartArt هنگام تبدیل ارائه به PDF حفظ میشود؟
بله. Aspose.Slides هنگام صادرات PDF، SmartArt را با دقت بصری بالا رندر میکند و چیدمان، رنگها و اثرات را حفظ مینماید.
آیا میتوانم تصویری از کل SmartArt (برای پیشنمایش یا گزارش) استخراج کنم؟
بله. میتوانید یک شکل SmartArt را به فرمتهای رستر یا به SVG رندر کنید تا خروجی برداری مقیاسپذیر داشته باشید، که برای تصویر بندانگشتی، گزارشها یا استفاده در وب مناسب است.

