ActiveX vezérlők kezelése prezentációkban .NET-ben
Bevezetés
Az ActiveX vezérlőket prezentációkban használják. Az Aspose.Slides for .NET lehetővé teszi az ActiveX vezérlők kezelését, de ezek kezelése valamivel trükkösebb és eltér a szokásos prezentációs alakzatoktól. Az Aspose.Slides for .NET 6.9.0‑tól a komponens támogatja az ActiveX vezérlők kezelését. Jelenleg hozzáférhet a már hozzáadott ActiveX vezérlőhöz a prezentációban, és módosíthatja vagy törölheti azt különböző tulajdonságainak használatával. Ne feledje, az ActiveX vezérlők nem alakzatok, és nem részei a prezentáció IShapeCollection‑ének, hanem a különálló IControlCollection‑nek. Ez a cikk bemutatja, hogyan dolgozzunk velük.
ActiveX vezérlők módosítása
Egy egyszerű ActiveX vezérlő, például egy szövegdoboz és egy egyszerű parancsgomb kezelése egy dián:
- Hozzon létre egy Presentation példányt, és töltse be a benne lévő ActiveX vezérlőkkel rendelkező prezentációt.
- Szerezze meg a dia hivatkozását az indexe alapján.
- A dián lévő ActiveX vezérlőkhöz a IControlCollection elérésével férjen hozzá.
- A TextBox1 ActiveX vezérlőhöz a ControlEx objektum használatával férjen hozzá.
- Módosítsa a TextBox1 ActiveX vezérlő különböző tulajdonságait, beleértve a szöveget, betűtípust, betűmagasságot és a keret pozícióját.
- Szerezze meg a második hozzáférési vezérlőt, amelynek neve CommandButton1.
- Módosítsa a gomb feliratát, betűtípust és pozíciót.
- Tolja el az ActiveX vezérlők keretének pozícióját.
- Írja ki a módosított prezentációt egy PPTX fájlba.
Az alábbi kódrészlet frissíti a prezentáció diáin lévő ActiveX vezérlőket, ahogy az alább látható.
// A prezentáció elérése ActiveX vezérlőkkel
Presentation presentation = new Presentation("ActiveX.pptm");
// Accessing the first slide in presentation
ISlide slide = presentation.Slides[0];
// szövegmező szövegének módosítása
IControl control = slide.Controls[0];
if (control.Name == "TextBox1" && control.Properties != null)
{
string newText = "Changed text";
control.Properties["Value"] = newText;
// helyettesítő kép módosítása. A PowerPoint ez a képet az ActiveX aktiválásakor cseréli, ezért néha rendben van, ha a képet változatlanul hagyjuk.
Bitmap image = new Bitmap((int)control.Frame.Width, (int)control.Frame.Height);
Graphics graphics = Graphics.FromImage(image);
Brush brush = new SolidBrush(Color.FromKnownColor(KnownColor.Window));
graphics.FillRectangle(brush, 0, 0, image.Width, image.Height);
brush.Dispose();
System.Drawing.Font font = new System.Drawing.Font(control.Properties["FontName"], 14);
brush = new SolidBrush(Color.FromKnownColor(KnownColor.WindowText));
graphics.DrawString(newText, font, brush, 10, 4);
brush.Dispose();
Pen pen = new Pen(Color.FromKnownColor(KnownColor.ControlDark), 1);
graphics.DrawLines(
pen, new System.Drawing.Point[] { new System.Drawing.Point(0, image.Height - 1), new System.Drawing.Point(0, 0), new System.Drawing.Point(image.Width - 1, 0) });
pen.Dispose();
pen = new Pen(Color.FromKnownColor(KnownColor.ControlDarkDark), 1);
graphics.DrawLines(pen, new System.Drawing.Point[] { new System.Drawing.Point(1, image.Height - 2), new System.Drawing.Point(1, 1), new System.Drawing.Point(image.Width - 2, 1) });
pen.Dispose();
pen = new Pen(Color.FromKnownColor(KnownColor.ControlLight), 1);
graphics.DrawLines(pen, new System.Drawing.Point[]
{
new System.Drawing.Point(1, image.Height - 1), new System.Drawing.Point(image.Width - 1, image.Height - 1),
new System.Drawing.Point(image.Width - 1, 1)
});
pen.Dispose();
pen = new Pen(Color.FromKnownColor(KnownColor.ControlLightLight), 1);
graphics.DrawLines(pen,new System.Drawing.Point[] { new System.Drawing.Point(0, image.Height), new System.Drawing.Point(image.Width, image.Height), new System.Drawing.Point(image.Width, 0) });
pen.Dispose();
graphics.Dispose();
control.SubstitutePictureFormat.Picture.Image = presentation.Images.AddImage(image);
}
// gomb feliratának módosítása
control = slide.Controls[1];
if (control.Name == "CommandButton1" && control.Properties != null)
{
String newCaption = "MessageBox";
control.Properties["Caption"] = newCaption;
// helyettesítő módosítása
Bitmap image = new Bitmap((int)control.Frame.Width, (int)control.Frame.Height);
Graphics graphics = Graphics.FromImage(image);
Brush brush = new SolidBrush(Color.FromKnownColor(KnownColor.Control));
graphics.FillRectangle(brush, 0, 0, image.Width, image.Height);
brush.Dispose();
System.Drawing.Font font = new System.Drawing.Font(control.Properties["FontName"], 14);
brush = new SolidBrush(Color.FromKnownColor(KnownColor.WindowText));
SizeF textSize = graphics.MeasureString(newCaption, font, int.MaxValue);
graphics.DrawString(newCaption, font, brush, (image.Width - textSize.Width) / 2, (image.Height - textSize.Height) / 2);
brush.Dispose();
Pen pen = new Pen(Color.FromKnownColor(KnownColor.ControlLightLight), 1);
graphics.DrawLines(pen, new System.Drawing.Point[] { new System.Drawing.Point(0, image.Height - 1), new System.Drawing.Point(0, 0), new System.Drawing.Point(image.Width - 1, 0) });
pen.Dispose();
pen = new Pen(Color.FromKnownColor(KnownColor.ControlLight), 1);
graphics.DrawLines(pen, new System.Drawing.Point[] { new System.Drawing.Point(1, image.Height - 2), new System.Drawing.Point(1, 1), new System.Drawing.Point(image.Width - 2, 1) });
pen.Dispose();
pen = new Pen(Color.FromKnownColor(KnownColor.ControlDark), 1);
graphics.DrawLines(pen,new System.Drawing.Point[]
{
new System.Drawing.Point(1, image.Height - 1),
new System.Drawing.Point(image.Width - 1, image.Height - 1),
new System.Drawing.Point(image.Width - 1, 1)
});
pen.Dispose();
pen = new Pen(Color.FromKnownColor(KnownColor.ControlDarkDark), 1);
graphics.DrawLines(pen,new System.Drawing.Point[] { new System.Drawing.Point(0, image.Height), new System.Drawing.Point(image.Width, image.Height), new System.Drawing.Point(image.Width, 0) });
pen.Dispose();
graphics.Dispose();
control.SubstitutePictureFormat.Picture.Image = presentation.Images.AddImage(image);
}
// ActiveX keretek 100 ponttal lefelé mozgatása
foreach (Control ctl in slide.Controls)
{
IShapeFrame frame = control.Frame;
control.Frame = new ShapeFrame(
frame.X, frame.Y + 100, frame.Width, frame.Height, frame.FlipH, frame.FlipV, frame.Rotation);
}
// A prezentáció mentése módosított ActiveX vezérlőkkel
presentation.Save("withActiveX-edited_out.pptm", Aspose.Slides.Export.SaveFormat.Pptm);
// Most a vezérlők eltávolítása
slide.Controls.Clear();
// A prezentáció mentése törölt ActiveX vezérlőkkel
presentation.Save("withActiveX.cleared_out.pptm", Aspose.Slides.Export.SaveFormat.Pptm);
ActiveX Media Player vezérlő hozzáadása
ActiveX Media Player vezérlő hozzáadásához hajtsa végre a következő lépéseket:
- Hozzon létre egy Presentation példányt, és töltse be a Media Player ActiveX vezérlőkkel rendelkező minta prezentációt.
- Hozzon létre egy cél Presentation példányt, és generáljon egy üres prezentációt.
- Klónozza a sablon prezentációban található Media Player ActiveX vezérlővel rendelkező diát a cél Presentation-be.
- Szerezze meg a klónozott diát a cél Presentation-ben.
- A dián lévő ActiveX vezérlőkhöz a IControlCollection elérésével férjen hozzá.
- A Media Player ActiveX vezérlőhöz férjen hozzá, és a tulajdonságainak segítségével állítsa be a videó útvonalát.
- Mentse a prezentációt egy PPTX fájlba.
// PPTX fájlt reprezentáló Presentation osztály példányosítása
Presentation presentation = new Presentation("template.pptx");
// Üres prezentáció példányának létrehozása
Presentation newPresentation = new Presentation();
// Alapértelmezett dia eltávolítása
newPresentation.Slides.RemoveAt(0);
// Dia klónozása Media Player ActiveX vezérlővel
newPresentation.Slides.InsertClone(0, presentation.Slides[0]);
// A Media Player ActiveX vezérlő elérése és a videó útvonalának beállítása
newPresentation.Slides[0].Controls[0].Properties["URL"] = "Wildlife.mp4";
// A prezentáció mentése
newPresentation.Save("LinkingVideoActiveXControl_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
GYIK
Megőrzi-e az Aspose.Slides az ActiveX vezérlőket olvasáskor és újra mentéskor, ha azok nem futtathatók a .NET futtatókörnyezetben?
Igen. Az Aspose.Slides a vezérlőket a prezentáció részeként kezeli, és képes olvasni/modosítani azok tulajdonságait és kereteit; a vezérlők tényleges végrehajtása nem szükséges a megőrzésükhöz.
Miben különböznek az ActiveX vezérlők az OLE objektumoktól egy prezentációban?
Az ActiveX vezérlők interaktív, kezelt vezérlők (gombok, szövegdobozok, médialejátszó), míg az OLE beágyazott alkalmazásobjektumokra (például egy Excel munkalapra) utal. Másként tárolódnak és kezelődnek, valamint eltérő tulajdonságmodelljük van.
Működnek-e az ActiveX események és a VBA makrók, ha a fájlt az Aspose.Slides módosította?
Az Aspose.Slides megőrzi a meglévő jelölőket és metaadatokat; azonban az események és makrók csak a Windows-on futó PowerPointban működnek, ha a biztonsági beállítások engedélyezik. A könyvtár nem hajtja végre a VBA‑t.