Eğitim
Öğrenme yolu
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Bu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Bu yemek kitabı, Visual Studio 2015'te kullanıma sunulan Visual Studio Görüntü Hizmeti ve Görüntü Kataloğu'nu benimsemeye yönelik rehberlik ve en iyi yöntemleri içerir.
Visual Studio 2015'te kullanıma sunulan görüntü hizmeti, geliştiricilerin cihaz için en iyi görüntüleri ve görüntü görüntülemek için kullanıcının seçtiği temayı almasına olanak tanır ve görüntü görüntülendikleri bağlam için doğru tema oluşturma da buna dahildir. Görüntü hizmetini benimsemek varlık bakımı, HDPI ölçeklendirme ve temalı işlemle ilgili önemli sorun noktalarını ortadan kaldırmaya yardımcı olur.
Günümüzdeki sorunlar | Çözümler |
---|---|
Arka plan rengi karıştırma | Yerleşik alfa harmanlama |
Temalı (bazı) görüntüler | Tema meta verileri |
Yüksek Karşıtlık modu | Alternatif Yüksek Karşıtlık kaynakları |
Farklı DPI modları için birden çok kaynağa ihtiyacınız var | Vektör tabanlı geri dönüş ile seçilebilir kaynaklar |
Yinelenen görüntüler | Görüntü kavramı başına bir tanımlayıcı |
Görüntü hizmetini neden benimseyin?
Visual Studio'dan her zaman en son "piksel mükemmeli" görüntüyü edinin
Kendi görüntülerinizi gönderebilir ve kullanabilirsiniz
Windows yeni DPI ölçeklendirmesi eklediğinde görüntülerinizi test etmeniz gerekmez
Uygulamalarınızdaki eski mimari engelleri ele alın
Görüntü hizmetini kullanmadan önce ve sonra Visual Studio kabuğu araç çubuğu:
Görüntü hizmeti desteklenen tüm UI çerçeveleri için uygun bit eşlemli bir görüntü sağlayabilir:
WPF: BitmapSource
WinForms: System.Drawing.Bitmap
Win32: HBITMAP
Görüntü hizmeti akış diyagramı
Görüntü takma adlar
Görüntü takma adı (veya kısaca takma ad), görüntü kitaplığındaki bir görüntü varlığını veya görüntü listesi varlığını benzersiz olarak tanımlayan bir GUID/KIMLIK çiftidir.
Bilinen adlar
Visual Studio Görüntü Kataloğu'nda yer alan ve herhangi bir Visual Studio bileşeni veya uzantısı tarafından genel olarak kullanılabilen görüntü adlarından oluşan küme.
Görüntü bildirim dosyaları
Görüntü bildirimi (.imagemanifest) dosyaları, bir görüntü varlıkları kümesini tanımlayan XML dosyaları, bu varlıkları temsil eden takma adlar ve her varlığı temsil eden gerçek görüntü veya görüntülerdir. Görüntü bildirimleri, eski kullanıcı arabirimi desteği için tek başına görüntüler veya görüntü listeleri tanımlayabilir. Ayrıca, varlıkların ne zaman ve nasıl görüntüleneceğini değiştirmek için varlıkta veya her varlığın arkasındaki tek tek görüntülerde ayarlanabilen öznitelikler vardır.
Görüntü bildirimi şeması
Tam bir görüntü bildirimi şöyle görünür:
<ImageManifest>
<!-- zero or one Symbols elements -->
<Symbols>
<!-- zero or more Import, Guid, ID, or String elements -->
</Symbols>
<!-- zero or one Images elements -->
<Images>
<!-- zero or more Image elements -->
</Images>
<!-- zero or one ImageLists elements -->
<ImageLists>
<!-- zero or more ImageList elements -->
</ImageLists>
</ImageManifest>
Simgeler
Okunabilirlik ve bakım yardımı olarak, görüntü bildirimi öznitelik değerleri için sembolleri kullanabilir. Simgeler şu şekilde tanımlanır:
<Symbols>
<Import Manifest="manifest" />
<Guid Name="ShellCommandGuid" Value="8ee4f65d-bab4-4cde-b8e7-ac412abbda8a" />
<ID Name="cmdidSaveAll" Value="1000" />
<String Name="AssemblyName" Value="Microsoft.VisualStudio.Shell.UI.Internal" />
<!-- If your assembly is strongly named, you'll need the version and public key token as well -->
<!-- <String Name="AssemblyName" Value="Microsoft.VisualStudio.Shell.UI.Internal;v17.0.0.0;b03f5f7f11d50a3a" /> -->
</Symbols>
Alt öğesi | Tanım |
---|---|
İçeri Aktar | Verilen bildirim dosyasının simgelerini geçerli bildirimde kullanılmak üzere içeri aktarır |
GUID | Simge bir GUID'yi temsil eder ve GUID biçimlendirmesi ile eşleşmelidir |
Kimlik | Simge bir kimliği temsil eder ve olumsuz olmayan bir tamsayı olmalıdır |
String | Simgesi rastgele bir dize değerini temsil eder |
Simgeler büyük/küçük harfe duyarlıdır ve $(sembol-adı) söz dizimi kullanılarak başvurulur:
<Image Guid="$(ShellCommandGuid)" ID="$(cmdidSaveAll)" >
<Source Uri="/$(AssemblyName);Component/Resources/image.xaml" />
</Image>
Bazı simgeler tüm bildirimler için önceden tanımlanmıştır. Bunlar, yerel makinedeki yollara başvurmak için Source> veya <Import> öğesinin Uri özniteliğinde <kullanılabilir.
Sembol | Açıklama |
---|---|
CommonProgramFiles | %CommonProgramFiles% ortam değişkeninin değeri |
LocalAppData | %LocalAppData% ortam değişkeninin değeri |
ManifestFolder | Bildirim dosyasını içeren klasör |
MyDocuments | Geçerli kullanıcının Belgelerim klasörünün tam yolu |
ProgramFiles | %ProgramFiles% ortam değişkeninin değeri |
Sistem | Windows\System32 klasörü |
WinDir | %WinDir% ortam değişkeninin değeri |
Görsel
<Image> öğesi, bir takma ad tarafından başvurulabilen bir görüntü tanımlar. Birlikte alınan GUID ve kimlik, görüntü adını oluşturur. Görüntünün adı, tüm görüntü kitaplığında benzersiz olmalıdır. Birden fazla görüntüde belirli bir takma ad varsa, kitaplığı oluştururken karşılaşılan ilk görüntü korunan görüntüdür.
En az bir kaynak içermelidir. Boyut açısından bağımsız kaynaklar, çok çeşitli boyutlarda en iyi sonuçları verir, ancak bunlar gerekli değildir. Hizmet, Image> öğesinde tanımlanmayan bir boyutun <görüntüsü istenirse ve boyuta bağımsız kaynak yoksa, hizmet boyuta özgü en iyi kaynağı seçer ve istenen boyuta ölçeklendirir.
<Image Guid="guid" ID="int" AllowColorInversion="true/false">
<Source ... />
<!-- optional additional Source elements -->
</Image>
Öznitelik | Tanım |
---|---|
GUID | [Gerekli] Görüntü takma adını guid bölümü |
Kimlik | [Gerekli] Görüntü takma adını id bölümü |
AllowColorInversion | [İsteğe bağlı, varsayılan true] Görüntünün koyu arka planda kullanıldığında renklerinin program aracılığıyla ters çevrilip çevrilemeyeceğini gösterir. |
Kaynak
<Source> öğesi tek bir görüntü kaynak varlığını (XAML ve PNG) tanımlar.
<Source Uri="uri" Background="background">
<!-- optional NativeResource element -->
</Source>
Öznitelik | Tanım |
---|---|
Uri | [Gerekli] Görüntünün nereden yüklenebileceğini tanımlayan bir URI. Şunlardan biri olabilir: - application:/// yetkilisini kullanan bir Paket URI'si - Mutlak bileşen kaynak başvurusu - Yerel kaynak içeren bir dosyanın yolu |
Background | [İsteğe bağlı] Kaynağın ne tür bir arka plan üzerinde kullanılmasını hedeflediğini gösterir. Şunlardan biri olabilir: Işık: Kaynak, açık arka planda kullanılabilir. Koyu: Kaynak koyu arka planda kullanılabilir. HighContrast: Kaynak, Yüksek Karşıtlık modunda herhangi bir arka planda kullanılabilir. HighContrastLight: Kaynak, Yüksek Karşıtlık modunda açık arka planda kullanılabilir. HighContrastDark: Kaynak, Yüksek Karşıtlık modunda koyu arka planda kullanılabilir. Background özniteliği atlanırsa, kaynak herhangi bir arka planda kullanılabilir. Arka Plan Açık, Koyu, HighContrastLight veya HighContrastDark ise, kaynağın renkleri hiçbir zaman ters çevrilemez. Arka Plan atlanırsa veya HighContrast olarak ayarlanırsa, kaynağın renklerinin ters çevrilmesi görüntünün AllowColorInversion özniteliği tarafından denetlenır. |
Source <> öğesi, aşağıdaki isteğe bağlı alt öğelerden tam olarak birine sahip olabilir:
Öğe | Öznitelikler (tümü gereklidir) | Tanım |
---|---|---|
<Büyüklük> | Değer | Kaynak, belirtilen boyuttaki görüntüler için (cihaz birimlerinde) kullanılacaktır. Görüntü kare olacak. |
<SizeRange> | MinSize, MaxSize | Kaynak, MinSize'den MaxSize'a (cihaz birimlerinde) dahil olmak üzere görüntüler için kullanılır. Görüntü kare olacak. |
<Boyutlar> | Genişlik, Yükseklik | Kaynak, verilen genişlik ve yükseklik görüntüleri için kullanılır (cihaz birimlerinde). |
<DimensionRange> | MinWidth, MinHeight, MaxWidth, MaxHeight |
Kaynak, en düşük genişlik/yükseklik ile en yüksek genişlik/yükseklik (cihaz birimlerinde) dahil olmak üzere görüntüler için kullanılır. |
Source <> öğesi, yönetilen bir derleme yerine yerel bir derlemeden yüklenen bir <Kaynağı> tanımlayan isteğe bağlı <bir NativeResource> alt öğesine de sahip olabilir.
<NativeResource Type="type" ID="int" />
Öznitelik | Tanım |
---|---|
Tür | [Gerekli] Yerel kaynağın türü (XAML veya PNG) |
Kimlik | [Gerekli] Yerel kaynağın tamsayı kimliği bölümü |
ImageList
<ImageList> öğesi, tek bir şeritte döndürülebilen bir görüntü koleksiyonunu tanımlar. Şerit, gerektiğinde isteğe bağlı olarak inşa edilmiştir.
<ImageList>
<ContainedImage Guid="guid" ID="int" External="true/false" />
<!-- optional additional ContainedImage elements -->
</ImageList>
Öznitelik | Tanım |
---|---|
GUID | [Gerekli] Görüntü takma adını guid bölümü |
Kimlik | [Gerekli] Görüntü takma adını id bölümü |
Harici | [İsteğe bağlı, varsayılan false] Görüntü takma adını geçerli bildirimdeki bir görüntüye başvurup başvurmadığını gösterir. |
kapsanan görüntünün adı geçerli bildirimde tanımlanan bir görüntüye başvurmak zorunda değildir. İçeren görüntü görüntü kitaplığında bulunamazsa, yerine boş bir yer tutucu görüntü kullanılır.
Görüntü hizmetini kullanmak için projenize aşağıdaki derlemelerin bazılarına veya tümüne başvuru eklemeniz gerekir:
Microsoft.VisualStudio.ImageCatalog.dll
Microsoft.VisualStudio.Imaging.dll
Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime.dll
ImageMoniker ve ImageAttributes türlerini kullanıyorsanız gereklidir.
EmbedInteropTypes true olarak ayarlanmalıdır.
Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime
IVsImageService2 türünü kullanıyorsanız gereklidir.
EmbedInteropTypes true olarak ayarlanmalıdır.
Microsoft.VisualStudio.Utilities.dll
Microsoft.VisualStudio.Shell.<VSVersion.0>
Microsoft.VisualStudio.Shell.Interop.10.0.dll
WinForms ile ilgili kullanıcı arabirimi yardımcılarını kullanıyorsanız gereklidir.
EmbedInteropTypes true olarak ayarlanmalıdır
Görüntü hizmetini kullanmak için projenize aşağıdaki üst bilgilerin bazılarını veya tümünü eklemeniz gerekir:
KnownImageIds.h
KnownMonikers.h
ImageParameters140.h
VSShell140.h
ImageThemingUtilities.h
Görüntü hizmetinin sizin için bunları işlemesine izin veremiyorsanız gereklidir.
Görüntü hizmeti görüntü temalı işleminizi gerçekleştirebiliyorsa bu üst bilgiyi kullanmayın.
VsDpiAwareness.h
Yukarıdaki ilk adımlar bölümünde gerekli derleme başvurularını projenize ekleyerek başlayın. Bunların tümünü eklemeniz gerekmez, bu nedenle yalnızca ihtiyacınız olan başvuruları ekleyin. (Not: kullanıyorsanız veya erişiminiz varsaFırçalar yerine renkler, ardından dönüştürücüye ihtiyacınız olmayacağından Yardımcı Programlar'a başvuruyu atlayabilirsiniz.)
İstediğiniz görüntüyü seçin ve adını alın. KnownMoniker kullanın veya kendi özel görüntüleriniz ve takma adlarınız varsa kendi adlarınızı kullanın.
XAML'nize CrispImages ekleyin. (Aşağıdaki örniğe bakın.)
Kullanıcı arabirimi hiyerarşinizde ImageThemingUtilities.ImageBackgroundColor özelliğini ayarlayın. (Bu, arka plan renginin bilindiği konumda ayarlanmalıdır, CrispImage.) (Aşağıdaki örne bakın.)
<Window
x:Class="WpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:imaging="clr-namespace:Microsoft.VisualStudio.Imaging;assembly=Microsoft.VisualStudio.Imaging"
xmlns:theming="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Imaging"
xmlns:utilities="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Utilities"
xmlns:catalog="clr-namespace:Microsoft.VisualStudio.Imaging;assembly=Microsoft.VisualStudio.ImageCatalog"
Title="MainWindow" Height="350" Width="525" UseLayoutRounding="True">
<Window.Resources>
<utilities:BrushToColorConverter x:Key="BrushToColorConverter"/>
</Window.Resources>
<StackPanel Background="White" VerticalAlignment="Center"
theming:ImageThemingUtilities.ImageBackgroundColor="{Binding Background, RelativeSource={RelativeSource Self}, Converter={StaticResource BrushToColorConverter}}">
<imaging:CrispImage Width="16" Height="16" Moniker="{x:Static catalog:KnownMonikers.MoveUp}" />
</StackPanel>
</Window>
Mevcut WPF kullanıcı arabirimi güncelleştirildi Nasıl yaparım??
Mevcut WPF kullanıcı arabiriminin güncelleştirilmesi, üç temel adımdan oluşan nispeten basit bir işlemdir:
Kullanıcı arabiriminizdeki tüm <Görüntü> öğelerini CrispImage> öğeleriyle <değiştirin.
Tüm Source özniteliklerini Takma ad öznitelikleriyle değiştirin.
Görüntü hiçbir zaman değişmezse ve KnownMonikers kullanıyorsanız, bu özelliği statik olarak KnownMoniker'e bağlayın. (Yukarıdaki örne bakın.)
Görüntü hiçbir zaman değişmiyorsa ve kendi özel görüntünüzü kullanıyorsanız, statik olarak kendi takma adınıza bağlayın.
Görüntü değişebilirse, Moniker özniteliğini özellik değişikliklerini bildiren bir kod özelliğine bağlayın.
Kullanıcı arabirimi hiyerarşisinde bir yerde, renk ters çevirmenin düzgün çalıştığından emin olmak için ImageThemingUtilities.ImageBackgroundColor ayarını yapın.
Görüntülerin ham yüklemesini değiştirmek için uygun olan yerlerde kodunuza aşağıdakileri ekleyin. Gerektiğinde HBITMAP'ler ile HICON'lar ve HIMAGELIST döndürme değerlerini değiştirin.
Görüntü hizmetini alma
CComPtr<IVsImageService2> spImgSvc;
CGlobalServiceProvider::HrQueryService(SID_SVsImageService, &spImgSvc);
Görüntü isteniyor
UINT dpiX, dpiY;
HWND hwnd = // get the HWND where the image will be displayed
VsUI::CDpiAwareness::GetDpiForWindow(hwnd, &dpiX, &dpiY);
ImageAttributes attr = { 0 };
attr.StructSize = sizeof(attributes);
attr.Format = DF_Win32;
// IT_Bitmap for HBITMAP, IT_Icon for HICON, IT_ImageList for HIMAGELIST
attr.ImageType = IT_Bitmap;
attr.LogicalWidth = 16;
attr.LogicalHeight = 16;
attr.Dpi = dpiX;
// Desired RGBA color, if you don't use this, don't set IAF_Background below
attr.Background = 0xFFFFFFFF;
attr.Flags = IAF_RequiredFlags | IAF_Background;
CComPtr<IVsUIObject> spImg;
// Replace this KnownMoniker with your desired ImageMoniker
spImgSvc->GetImage(KnownMonikers::Blank, attributes, &spImg);
Görüntülerin ham yüklemesini değiştirmek için uygun olan yerlerde kodunuza aşağıdakileri ekleyin. Gerektiğinde Bit Eşlemler ile Simgeler arasındaki değerleri değiştirin.
Yararlı using deyimi
using GelUtilities = Microsoft.Internal.VisualStudio.PlatformUI.Utilities;
Görüntü hizmetini alma
// This or your preferred way of querying for Visual Studio services
IVsImageService2 imageService = (IVsImageService2)Package.GetGlobalService(typeof(SVsImageService));
Görüntüyü isteme
Control control = // get the control where the image will be displayed
ImageAttributes attributes = new ImageAttributes
{
StructSize = Marshal.SizeOf(typeof(ImageAttributes)),
// IT_Bitmap for Bitmap, IT_Icon for Icon, IT_ImageList for ImageList
ImageType = (uint)_UIImageType.IT_Bitmap,
Format = (uint)_UIDataFormat.DF_WinForms,
LogicalWidth = 16,
LogicalHeight = 16,
Dpi = (int)DpiAwareness.GetWindowDpi(control.Handle);
// Desired RGBA color, if you don't use this, don't set IAF_Background below
Background = 0xFFFFFFFF,
Flags = unchecked((uint)_ImageAttributesFlags.IAF_RequiredFlags | _ImageAttributesFlags.IAF_Background),
};
// Replace this KnownMoniker with your desired ImageMoniker
IVsUIObject uIObj = imageService.GetImage(KnownMonikers.Blank, attributes);
Bitmap bitmap = (Bitmap)GelUtilities.GetObjectData(uiObj); // Use this if you need a bitmap
// Icon icon = (Icon)GelUtilities.GetObjectData(uiObj); // Use this if you need an icon
VSIX paket projesi şablonu Visual Studio 2015 için güncelleştirildi. Yeni bir araç penceresi oluşturmak için VSIX projesine sağ tıklayın ve Yeni Öğe Ekle>(Ctrl+Shift+A) öğesini seçin. Proje dilinin Genişletilebilirlik düğümü altında Özel Araç Penceresi'ni seçin, araç penceresine bir ad verin ve Ekle düğmesine basın.
Bunlar, araç penceresinde takma adlar kullanılacak önemli yerlerdir. Her birinin yönergelerini izleyin:
Sekmeler yeterince küçük olduğunda araç penceresi sekmesi (Ctrl+Sekmesi pencere değiştiricisinde de kullanılır).
Bu satırı ToolWindowPane türünden türetilen sınıfın oluşturucusna ekleyin:
// Replace this KnownMoniker with your desired ImageMoniker
this.BitmapImageMoniker = KnownMonikers.Blank;
Araç penceresini açma komutu.
Paketin .vsct
dosyasında araç penceresinin komut düğmesini düzenleyin:
<Button guid="guidPackageCmdSet" id="CommandId" priority="0x0100" type="Button">
<Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1"/>
<!-- Replace this KnownMoniker with your desired ImageMoniker -->
<Icon guid="ImageCatalogGuid" id="Blank" />
<!-- Add this -->
<CommandFlag>IconIsMoniker</CommandFlag>
<Strings>
<ButtonText>MyToolWindow</ButtonText>
</Strings>
</Button>
Öğelerden sonra dosyanın en üstünde aşağıdakilerin de bulunduğundan <Extern>
emin olun:
<Include href="KnownImageIds.vsct"/>
Mevcut araç penceresini görüntü takma adlarını kullanacak şekilde güncelleştirmek, yeni araç penceresi oluşturma adımlarına benzer.
Bunlar, araç penceresinde takma adlar kullanılacak önemli yerlerdir. Her birinin yönergelerini izleyin:
Sekmeler yeterince küçük olduğunda araç penceresi sekmesi (Ctrl+Sekmesi pencere değiştiricisinde de kullanılır).
ToolWindowPane türünden türetilen sınıfın oluşturucusunda şu satırları kaldırın (varsa):
this.BitmapResourceID = <Value>;
this.BitmapIndex = <Value>;
Yukarıdaki "Nasıl yaparım? yeni bir araç penceresinde görüntü takma adlarını mı kullanacaksınız?" bölümünün 1. adımına bakın.
Araç penceresini açma komutu.
Dosyanızı .vsct
aşağıdaki açıklama satırıyla gösterildiği gibi güncelleştirin:
<?xml version="1.0" encoding="utf-8"?>
<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Include the definitions for images included in the VS image catalog -->
<Include href="KnownImageIds.vsct"/>
<Commands package="guidMyPackage">
<Buttons>
<Button guid="guidMyCommandSet" id="cmdidMyCommand" priority="0x0000" type="Button">
<!-- Add an Icon element, changing the attributes to match the image moniker you want to use.
In this case, we're using the Guid for the VS image catalog.
Change the id attribute to be the ID of the desired image moniker. -->
<Icon guid="ImageCatalogGuid" id="OpenFolder" />
<CommandFlag>DynamicVisibility</CommandFlag>
<CommandFlag>DefaultInvisible</CommandFlag>
<CommandFlag>DefaultDisabled</CommandFlag>
<CommandFlag>CommandWellOnly</CommandFlag>
<CommandFlag>IconAndText</CommandFlag>
<!-- Add the IconIsMoniker CommandFlag -->
<CommandFlag>IconIsMoniker</CommandFlag>
<Strings>
<ButtonText>Quick Fixes...</ButtonText>
<CommandName>Show Quick Fixes</CommandName>
<CanonicalName>ShowQuickFixes</CanonicalName>
<LocCanonicalName>ShowQuickFixes</LocCanonicalName>
</Strings>
</Button>
</Buttons>
</Commands>
<!-- It is recommended that you remove <Bitmap> elements that are no longer used in the vsct file -->
<Symbols>
<GuidSymbol name="guidMyPackage" value="{1491e936-6ffe-474e-8371-30e5920d8fdd}" />
<GuidSymbol name="guidMyCommandSet" value="{10347de4-69a9-47f4-a950-d3301f6d2bc7}">
<IDSymbol name="cmdidMyCommand" value="0x9437" />
</GuidSymbol>
</Symbols>
</CommandTable>
.vsct dosyamın da Visual Studio'nun eski sürümleri tarafından okunması gerekiyorsa ne olur?
Visual Studio'nun eski sürümleri IconIsMoniker komut bayrağını tanımaz. Visual Studio'nun destekleyen sürümlerinde görüntü hizmetinden görüntüler kullanabilirsiniz, ancak Visual Studio'nun eski sürümlerinde eski stildeki görüntüleri kullanmaya devam edebilirsiniz. Bunu yapmak için, dosyayı değişmeden bırakırsınız .vsct
(ve bu nedenle Visual Studio'nun <eski sürümleriyle uyumludur) ve dosyanın Bit Eşlemleri> öğesinde tanımlanan GUID/ID çiftlerinden görüntü adı GUID/KIMLIK çiftlerine eşlenen bir .vsct
CSV (virgülle ayrılmış değerler) dosyası oluşturursunuz.
Eşleme CSV dosyasının biçimi:
Icon guid, Icon id, Moniker guid, Moniker id
b714fcf7-855e-4e4c-802a-1fd87144ccad,1,fda30684-682d-421c-8be4-650a2967058e,100
b714fcf7-855e-4e4c-802a-1fd87144ccad,2,fda30684-682d-421c-8be4-650a2967058e,200
CSV dosyası paketle dağıtılır ve konumu ProvideMenuResource paket özniteliğinin IconMappingFilename özelliği tarafından belirtilir:
[ProvideMenuResource("MyPackage.ctmenu", 1, IconMappingFilename="IconMappings.csv")]
IconMappingFilename, örtük olarak $PackageFolder$ (yukarıdaki örnekte olduğu gibi) ile kök köklerine sahip göreli bir yol veya @"%UserProfile%\dir1\dir2\MyMappingFile.csv" gibi bir ortam değişkeni tarafından tanımlanan dizinde açıkça köklenen mutlak bir yoldur.
Bir proje için ImageMonikers sağlama
Projenin IVsHierarchy'sinde VSHPROPID_SupportsIconMonikers uygulayın ve true değerini döndürin.
VSHPROPID_IconMonikerImageList (özgün proje VSHPROPID_IconImgList kullandıysa) veya VSHPROPID_IconMonikerGuid, VSHPROPID_IconMonikerId, VSHPROPID_OpenFolderIconMonikerGuid VSHPROPID_OpenFolderIconMonikerId (özgün proje VSHPROPID_IconHandle ve VSHPROPID_OpenFolderIconHandle kullandıysa) uygulayın.
Uzantı noktaları bunları isterse simgelerin "eski" sürümlerini oluşturmak için simgeler için özgün VSHPROPID'lerin uygulamasını değiştirin. IVsImageService2 , bu simgeleri almak için gereken işlevleri sağlar
VB/C# proje tatları için ek gereksinimler
yalnızca projenizin en dıştaki aroma olduğunu algılarsanız VSHPROPID_SupportsIconMonikers uygulayın. Aksi takdirde, en dıştaki gerçek aroma gerçekte görüntü takma adlarını desteklemeyebilir ve temel aromanız özelleştirilmiş görüntüleri etkili bir şekilde "gizleyebilir".
CPS'de görüntü adı Nasıl yaparım? kullanılır?
CPS'de (Ortak Proje Sistemi) özel görüntüleri ayarlama işlemi el ile veya Proje Sistemi Genişletilebilirlik SDK'sı ile birlikte gelen bir öğe şablonu aracılığıyla yapılabilir.
Proje Sistemi Genişletilebilirlik SDK'sını kullanma
CPS görüntülerinizi özelleştirmek için Proje Türü/Öğe türü için özel simgeler sağlama başlığındaki yönergeleri izleyin. CPS hakkında daha fazla bilgiyi Visual Studio Proje Sistemi genişletilebilirlik belgelerinde bulabilirsiniz
ImageMonikers'i el ile kullanma
Proje sisteminizde IProjectTreeModifier arabirimini uygulayın ve dışarı aktarın.
Hangi Bilinen Adı veya özel görüntü takma adını kullanmak istediğinizi belirleyin.
ApplyModifications yönteminde, aşağıdaki örneğe benzer şekilde yeni ağacı döndürmeden önce yönteminin herhangi bir yerinde aşağıdakileri yapın:
// Replace this KnownMoniker with your desired ImageMoniker
tree = tree.SetIcon(KnownMonikers.Blank.ToProjectSystemType());
Yeni bir ağaç oluşturuyorsanız, aşağıdaki örneğe benzer şekilde, istenen ad adlarını NewTree yöntemine geçirerek özel görüntüleri ayarlayabilirsiniz:
// Replace this KnownMoniker with your desired ImageMoniker
ProjectImageMoniker icon = KnownMonikers.FolderClosed.ToProjectSystemType();
ProjectImageMoniker expandedIcon = KnownMonikers.FolderOpened.ToProjectSystemType();
return this.ProjectTreeFactory.Value.NewTree(/*caption*/<value>,
/*filePath*/<value>,
/*browseObjectProperties*/<value>,
icon,
expandedIcon);
HIMAGELIST'leri desteklemem gerekiyor
Kodunuz için görüntü hizmetini kullanmak üzere güncelleştirmek istediğiniz zaten bir görüntü şeridi varsa, ancak görüntü listelerini geçirmeyi gerektiren API'lerle kısıtlanmışsanız, görüntü hizmetinin avantajlarından yararlanmaya devam edebilirsiniz. Takma ad tabanlı bir görüntü şeridi oluşturmak için aşağıdaki adımları izleyerek mevcut adlardan bir bildirim oluşturun.
ManifestFromResources aracını çalıştırarak görüntü şeridini geçirin. Bu, şerit için bir bildirim oluşturur.
Yalnızca Bilinen Adlar kullanıyorsanız aşağıdakileri yapın:
Bildirimin <Images> bölümünü Images/> ile <değiştirin.
Tüm alt kimlikleri (imagestrip name>_## içeren <her şey) kaldırın.
Önerilen: AssetsGuid simgesini ve görüntü şeridi simgesini kullanımına uyacak şekilde yeniden adlandırın.
Her Bir ContainedImage GUID'sini $(ImageCatalogGuid) ile değiştirin, her Bir ContainedImage kimliğini $(<moniker>) ile değiştirin ve her Bir ContainedImage'a External="true" özniteliğini ekleyin
Simgeler> bölümünün en üstüne <Import Manifest="$(ManifestFolder)\<Relative install dir path to *>\Microsoft.VisualStudio.ImageCatalog.imagemanifest" /*> ekleyin<.
Var olan kodun görüntü şeridi için görüntü hizmetini sorgulamak için kullanabileceği bir takma adına sahip olması için sarmalayıcılar oluşturmak için ManifestToCode aracını çalıştırın.
Görüntü hizmeti ve yeni dosyalarla çalışmak için tüm eklemeleri, kurulum yazma/dağıtım ve diğer kod değişikliklerini yapın.
Nasıl görünmesi gerektiğini görmek için hem iç hem de dış görüntüleri içeren örnek bildirim:
<?xml version="1.0"?>
<ImageManifest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.microsoft.com/VisualStudio/ImageManifestSchema/2014">
<Symbols>
<!-- This needs to be the relative path from your manifest to the ImageCatalog's manifest
where $(ManifestFolder) is the deployed location of this manifest. -->
<Import Manifest="$(ManifestFolder)\<RelPath>\Microsoft.VisualStudio.ImageCatalog.imagemanifest" />
<String Name="Resources" Value="/My.Assembly.Name;Component/Resources/ImageStrip" />
<Guid Name="ImageGuid" Value="{fb41b7ef-6587-480c-aa27-5b559d42cfc9}" />
<Guid Name="ImageStripGuid" Value="{9c84a570-d9a7-4052-a340-188fb276f973}" />
<ID Name="MyImage_0" Value="100" />
<ID Name="MyImage_1" Value="101" />
<ID Name="InternalList" Value="1001" />
<ID Name="ExternalList" Value="1002" />
</Symbols>
<Images>
<Image Guid="$(ImageGuid)" ID="$(MyImage_0)">
<Source Uri="$(Resources)/MyImage_0.png">
<Size Value="16" />
</Source>
</Image>
<Image Guid="$(ImageGuid)" ID="$(MyImage_1)">
<Source Uri="$(Resources)/MyImage_1.png">
<Size Value="16" />
</Source>
</Image>
</Images>
<ImageLists>
<ImageList Guid="$(ImageStripGuid)" ID="$(InternalList)">
<ContainedImage Guid="$(ImageGuid)" ID="$(MyImage_0)" />
<ContainedImage Guid="$(ImageGuid)" ID="$(MyImage_1)" />
</ImageList>
<ImageList Guid="$(ImageStripGuid)" ID="$(ExternalList)">
<ContainedImage Guid="$(ImageCatalogGuid)" ID="$(StatusError)" External="true" />
<ContainedImage Guid="$(ImageCatalogGuid)" ID="$(StatusWarning)" External="true" />
<ContainedImage Guid="$(ImageCatalogGuid)" ID="$(StatusInformation)" External="true" />
</ImageList>
</ImageLists>
</ImageManifest>
HIMAGELISTs desteğine ihtiyacım yok
Görüntü şeridinizdeki görüntülerle eşleşen Bilinen Adlar kümesini belirleyin veya görüntü şeridinizdeki görüntüler için kendi adlarınızı oluşturun.
Bunun yerine, görüntü şeridindeki gerekli dizindeki görüntüyü almak için kullandığınız eşlemeyi güncelleştirin.
Kodunuzu güncelleştirilmiş eşleme aracılığıyla ad istemek üzere görüntü hizmetini kullanacak şekilde güncelleştirin. (Bu, şu adrese güncelleştirme yapmak anlamına gelebilir: Yönetilen kod için CrispImages veya görüntü hizmetinden HBITMAP'ler veya HICON'lar istemek ve bunları yerel kod için geçirmek.)
Her şeyin doğru yazıldığından emin olmak için görüntü bildirimlerinizi test etmek için Görüntü Kitaplığı Görüntüleyicisi aracını kullanabilirsiniz. Aracı Visual Studio 2015 SDK'sında bulabilirsiniz. Bu araç ve diğer araçlarla ilgili belgelere buradan ulaşabilirsiniz.
GitHub'daki Visual Studio örneklerinin birkaçı, çeşitli Visual Studio genişletilebilirlik noktalarının bir parçası olarak görüntü hizmetinin nasıl kullanılacağını gösterecek şekilde güncelleştirildi.
En son örnekleri denetleyin http://github.com/Microsoft/VSSDK-Extensibility-Samples
.
Görüntü Hizmeti ile çalışan kullanıcı arabirimini oluşturmaya/güncelleştirmeye yardımcı olmak için Görüntü Hizmeti için bir dizi destek aracı oluşturuldu. Her araç hakkında daha fazla bilgi için araçlarla birlikte gelen belgelere bakın. Araçlar Visual Studio 2015 SDK'sının bir parçası olarak bulunur.
ManifestFromResources
Kaynaklardan Bildirim aracı, görüntü kaynaklarının (PNG veya XAML) listesini alır ve bu görüntüleri görüntü hizmetiyle kullanmak için bir görüntü bildirim dosyası oluşturur.
ManifestToCode
Koda Bildirim aracı bir görüntü bildirim dosyası alır ve koddaki bildirim değerlerine (C++, C# veya VB) veya .vsct
dosyalara başvurmak için bir sarmalayıcı dosyası oluşturur.
ImageLibraryViewer
Görüntü Kitaplığı Görüntüleyicisi aracı görüntü bildirimlerini yükleyebilir ve kullanıcının bunları Visual Studio'da olduğu gibi değiştirerek bildirimin doğru yazıldığından emin olmasını sağlar. Kullanıcı arka planı, boyutları, DPI ayarını, Yüksek Karşıtlığı ve diğer ayarları değiştirebilir. Ayrıca, bildirimlerdeki hataları bulmak için yükleme bilgilerini görüntüler ve bildirimdeki her görüntünün kaynak bilgilerini görüntüler.
Reference Include="Microsoft.VisualStudio.* yüklenirken <eklemeniz gereken bağımlılıklar var mı? Interop.14.0.DesignTime" />?
Uzantımla bir görüntü bildirimi Nasıl yaparım? dağıtın?
.imagemanifest
Dosyayı projenize ekleyin.
"VSIX'e Ekle" değerini True olarak ayarlayın.
Resimlerim hala çalışmıyor, neyin yanlış olduğunu nasıl anlarım?
Visual Studio görüntü bildiriminizi bulamayabilir. Performans nedenleriyle Visual Studio klasör arama derinliğini sınırlar, bu nedenle görüntü bildiriminin uzantınızın kök klasöründe tutulması önerilir.
Görüntü bildirim dosyanızda derleme bilgileri eksik olabilir. Kesin olarak adlandırılmış derlemeler, Visual Studio tarafından yüklenebilmesi için ek bilgiler gerektirir. Kesin olarak adlandırılmış bir derlemeyi yüklemek için, görüntü bildiriminizdeki görüntüler için kaynak URI'lerine derleme sürümünü ve ortak anahtar belirtecini (derleme adına ek olarak) eklemeniz gerekir.
<ImageManifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/VisualStudio/ImageManifestSchema/2014">
<Symbols>
<String Name="Resources" Value="/Microsoft.VisualStudio.Shell.UI.Internal;v17.0.0.0;b03f5f7f11d50a3a;Component/Resources" />
...
</Symbols>
...
</ImageManifest>
Görüntü derlemeniz için bir kod tabanı girdisi eksik olabilir. Derlemeniz Visual Studio'ya ihtiyaç duyduğunda henüz yüklenmemişse, derlemenizi yüklemek için nerede bulacağını bilmesi gerekir. Derlemenize bir kod tabanı eklemek için ProvideCodeBaseAttribute'u kullanarak uzantınızın pkgdef'ine bir kod tabanı girdisi oluşturulduğundan ve eklendiğinden emin olabilirsiniz.
[assembly: ProvideCodeBase(AssemblyName = "ClassLibrary1", Version = "1.0.0.0", CodeBase = "$PackageFolder$\\ClassLibrary1.dll")]
Önceki seçenekler görüntü yükleme sorununuzu çözmezse, aşağıdaki girdileri uzantınızdaki bir pkgdef'e bırakarak günlüğe kaydetmeyi etkinleştirebilirsiniz:
[$RootKey$\ImageLibrary]
"TraceLevel"="Verbose"
"TraceFilename"="ImageLibrary.log"
Bu, %UserProfile% klasörünüzde ImageLibrary.log adlı bir günlük dosyası oluşturur. Bu girdileri bir pkgdef'e ekledikten sonra geliştirici komut isteminden "devenv /updateConfiguration" komutunu çalıştırdığınızdan emin olun. Bu, günlük girdilerinin etkinleştirilmesini ve VS'nin görüntü bildiriminizi okurken oluşabilecek hataları bulmaya yardımcı olmak için görüntü bildirimi önbelleğini yenilemesini sağlar. Ardından görüntünüzün yüklenmesinin beklendiği senaryoyu çalıştırırsanız, günlük dosyanız hem kayıt günlüğünü hem de görüntünüz için istek günlüğünü içerir.
CPS Proje Sistemimi güncelleştiriyorum. ImageName ve StockIconService'e ne oldu?
CPS, takma ad kullanacak şekilde güncelleştirildiğinde bunlar kaldırıldı. Artık StockIconService'i çağırmanız gerekmez, CPS yardımcı programlarındaki ToProjectSystemType() uzantı yöntemini kullanarak istenen KnownMoniker'ı yönteme veya özelliğe geçirmeniz yeterlidir. ImageName'den KnownMonikers'e eşlemeyi aşağıda bulabilirsiniz:
ImageName | Bilinen Adı |
---|---|
ImageName.OfflineWebApp | KnownImageIds.Web |
ImageName.WebReferencesFolder | KnownImageIds.Web |
ImageName.OpenReferenceFolder | KnownImageIds.FolderOpened |
ImageName.ReferenceFolder | KnownImageIds.Reference |
ImageName.Reference | KnownImageIds.Reference |
ImageName.SdlWebReference | KnownImageIds.WebReferenceFolder |
ImageName.DiscoWebReference | KnownImageIds.DynamicDiscoveryDocument |
ImageName.Folder | KnownImageIds.FolderClosed |
ImageName.OpenFolder | KnownImageIds.FolderOpened |
ImageName.ExcludedFolder | KnownImageIds.HiddenFolderClosed |
ImageName.OpenExcludedFolder | KnownImageIds.HiddenFolderOpened |
ImageName.ExcludedFile | KnownImageIds.HiddenFile |
ImageName.DependentFile | KnownImageIds.GenerateFile |
ImageName.MissingFile | KnownImageIds.DocumentWarning |
ImageName.WindowsForm | KnownImageIds.WindowsForm |
ImageName.WindowsUserControl | KnownImageIds.UserControl |
ImageName.WindowsComponent | KnownImageIds.ComponentFile |
ImageName.XmlSchema | KnownImageIds.XMLSchema |
ImageName.XmlFile | KnownImageIds.XMLFile |
ImageName.WebForm | KnownImageIds.Web |
ImageName.WebService | KnownImageIds.WebService |
ImageName.WebUserControl | KnownImageIds.WebUserControl |
ImageName.WebCustomUserControl | KnownImageIds.WebCustomControl |
ImageName.AspPage | KnownImageIds.ASPFile |
ImageName.GlobalApplicationClass | KnownImageIds.SettingsFile |
ImageName.WebConfig | KnownImageIds.ConfigurationFile |
ImageName.HtmlPage | KnownImageIds.HTMLFile |
ImageName.StyleSheet | KnownImageIds.StyleSheet |
ImageName.ScriptFile | KnownImageIds.JSScript |
ImageName.TextFile | KnownImageIds.Document |
ImageName.SettingsFile | KnownImageIds.Settings |
ImageName.Resources | KnownImageIds.DocumentGroup |
ImageName.Bitmap | KnownImageIds.Image |
ImageName.Icon | KnownImageIds.IconFile |
ImageName.Image | KnownImageIds.Image |
ImageName.ImageMap | KnownImageIds.ImageMapFile |
ImageName.XWorld | KnownImageIds.XWorldFile |
ImageName.Audio | KnownImageIds.Sound |
ImageName.Video | KnownImageIds.Media |
ImageName.Cab | KnownImageIds.CABProject |
ImageName.Jar | KnownImageIds.JARFile |
ImageName.DataEnvironment | KnownImageIds.DataTable |
ImageName.PreviewFile | KnownImageIds.Report |
ImageName.DanglingReference | KnownImageIds.ReferenceWarning |
ImageName.XsltFile | KnownImageIds.XSLTransform |
ImageName.Cursor | KnownImageIds.CursorFile |
ImageName.AppDesignerFolder | KnownImageIds.Property |
ImageName.Data | KnownImageIds.Database |
ImageName.Application | KnownImageIds.Application |
ImageName.DataSet | KnownImageIds.DatabaseGroup |
ImageName.Pfx | KnownImageIds.Certificate |
ImageName.Snk | KnownImageIds.Rule |
ImageName.VisualBasicProject | KnownImageIds.VBProjectNode |
ImageName.CSharpProject | KnownImageIds.CSProjectNode |
ImageName.Empty | KnownImageIds.Blank |
ImageName.MissingFolder | KnownImageIds.FolderOffline |
ImageName.SharedImportReference | KnownImageIds.SharedProject |
ImageName.SharedProjectCs | KnownImageIds.CSSharedProject |
ImageName.SharedProjectVc | KnownImageIds.CPPSharedProject |
ImageName.SharedProjectJs | KnownImageIds.JSSharedProject |
ImageName.CSharpCodeFile | KnownImageIds.CSFileNode |
ImageName.VisualBasicCodeFile | KnownImageIds.VBFileNode |
Tamamlama listesi sağlayıcımı güncelleştiriyorum. Hangi Bilinen Adlar eski StandardGlyphGroup ve StandardGlyph değerleriyle eşleşmektedir?
Veri Akışı Adı | Veri Akışı Adı | Veri Akışı Adı |
---|---|---|
GlyphGroupClass | GlifItemPublic | ClassPublic |
GlyphGroupClass | GlifItemInternal | ClassInternal |
GlyphGroupClass | GlyphItemFriend | ClassInternal |
GlyphGroupClass | GlyphItemProtected | ClassProtected |
GlyphGroupClass | GlifItemPrivate | ClassPrivate |
GlyphGroupClass | GlyphItemShortcut | ClassShortcut |
GlyphGroupConstant | GlifItemPublic | ConstantPublic |
GlyphGroupConstant | GlifItemInternal | ConstantInternal |
GlyphGroupConstant | GlyphItemFriend | ConstantInternal |
GlyphGroupConstant | GlyphItemProtected | ConstantProtected |
GlyphGroupConstant | GlifItemPrivate | ConstantPrivate |
GlyphGroupConstant | GlyphItemShortcut | ConstantShortcut |
GlyphGroupDelegate | GlifItemPublic | DelegatePublic |
GlyphGroupDelegate | GlifItemInternal | TemsilciInternal |
GlyphGroupDelegate | GlyphItemFriend | TemsilciInternal |
GlyphGroupDelegate | GlyphItemProtected | DelegateProtected |
GlyphGroupDelegate | GlifItemPrivate | DelegatePrivate |
GlyphGroupDelegate | GlyphItemShortcut | DelegateShortcut |
GlyphGroupEnum | GlifItemPublic | EnumerationPublic |
GlyphGroupEnum | GlifItemInternal | Sabit ListesiInternal |
GlyphGroupEnum | GlyphItemFriend | Sabit ListesiInternal |
GlyphGroupEnum | GlyphItemProtected | EnumerationProtected |
GlyphGroupEnum | GlifItemPrivate | EnumerationPrivate |
GlyphGroupEnum | GlyphItemShortcut | EnumerationShortcut |
GlyphGroupEnumMember | GlifItemPublic | EnumerationItemPublic |
GlyphGroupEnumMember | GlifItemInternal | EnumerationItemInternal |
GlyphGroupEnumMember | GlyphItemFriend | EnumerationItemInternal |
GlyphGroupEnumMember | GlyphItemProtected | EnumerationItemProtected |
GlyphGroupEnumMember | GlifItemPrivate | EnumerationItemPrivate |
GlyphGroupEnumMember | GlyphItemShortcut | EnumerationItemShortcut |
GlyphGroupEvent | GlifItemPublic | EventPublic |
GlyphGroupEvent | GlifItemInternal | EventInternal |
GlyphGroupEvent | GlyphItemFriend | EventInternal |
GlyphGroupEvent | GlyphItemProtected | EventProtected |
GlyphGroupEvent | GlifItemPrivate | EventPrivate |
GlyphGroupEvent | GlyphItemShortcut | EventShortcut |
GlyphGroupException | GlifItemPublic | ExceptionPublic |
GlyphGroupException | GlifItemInternal | ExceptionInternal |
GlyphGroupException | GlyphItemFriend | ExceptionInternal |
GlyphGroupException | GlyphItemProtected | ExceptionProtected |
GlyphGroupException | GlifItemPrivate | ExceptionPrivate |
GlyphGroupException | GlyphItemShortcut | ExceptionShortcut |
GlyphGroupField | GlifItemPublic | FieldPublic |
GlyphGroupField | GlifItemInternal | FieldInternal |
GlyphGroupField | GlyphItemFriend | FieldInternal |
GlyphGroupField | GlyphItemProtected | Alan Koruması |
GlyphGroupField | GlifItemPrivate | FieldPrivate |
GlyphGroupField | GlyphItemShortcut | FieldShortcut |
GlyphGroupInterface | GlifItemPublic | InterfacePublic |
GlyphGroupInterface | GlifItemInternal | InterfaceInternal |
GlyphGroupInterface | GlyphItemFriend | InterfaceInternal |
GlyphGroupInterface | GlyphItemProtected | InterfaceProtected |
GlyphGroupInterface | GlifItemPrivate | InterfacePrivate |
GlyphGroupInterface | GlyphItemShortcut | InterfaceShortcut |
GlyphGroupMacro | GlifItemPublic | MacroPublic |
GlyphGroupMacro | GlifItemInternal | MacroInternal |
GlyphGroupMacro | GlyphItemFriend | MacroInternal |
GlyphGroupMacro | GlyphItemProtected | Makro Koruması |
GlyphGroupMacro | GlifItemPrivate | MacroPrivate |
GlyphGroupMacro | GlyphItemShortcut | MacroShortcut |
GlyphGroupMap | GlifItemPublic | MapPublic |
GlyphGroupMap | GlifItemInternal | MapInternal |
GlyphGroupMap | GlyphItemFriend | MapInternal |
GlyphGroupMap | GlyphItemProtected | MapProtected |
GlyphGroupMap | GlifItemPrivate | MapPrivate |
GlyphGroupMap | GlyphItemShortcut | MapShortcut |
GlyphGroupMapItem | GlifItemPublic | MapItemPublic |
GlyphGroupMapItem | GlifItemInternal | MapItemInternal |
GlyphGroupMapItem | GlyphItemFriend | MapItemInternal |
GlyphGroupMapItem | GlyphItemProtected | MapItemProtected |
GlyphGroupMapItem | GlifItemPrivate | MapItemPrivate |
GlyphGroupMapItem | GlyphItemShortcut | MapItemShortcut |
GlyphGroupMethod | GlifItemPublic | MethodPublic |
GlyphGroupMethod | GlifItemInternal | MethodInternal |
GlyphGroupMethod | GlyphItemFriend | MethodInternal |
GlyphGroupMethod | GlyphItemProtected | MethodProtected |
GlyphGroupMethod | GlifItemPrivate | MethodPrivate |
GlyphGroupMethod | GlyphItemShortcut | MethodShortcut |
GlyphGroupOverload | GlifItemPublic | MethodPublic |
GlyphGroupOverload | GlifItemInternal | MethodInternal |
GlyphGroupOverload | GlyphItemFriend | MethodInternal |
GlyphGroupOverload | GlyphItemProtected | MethodProtected |
GlyphGroupOverload | GlifItemPrivate | MethodPrivate |
GlyphGroupOverload | GlyphItemShortcut | MethodShortcut |
GlyphGroupModule | GlifItemPublic | ModulePublic |
GlyphGroupModule | GlifItemInternal | ModuleInternal |
GlyphGroupModule | GlyphItemFriend | ModuleInternal |
GlyphGroupModule | GlyphItemProtected | ModuleProtected |
GlyphGroupModule | GlifItemPrivate | ModulePrivate |
GlyphGroupModule | GlyphItemShortcut | ModuleShortcut |
GlyphGroupNamespace | GlifItemPublic | NamespacePublic |
GlyphGroupNamespace | GlifItemInternal | NamespaceInternal |
GlyphGroupNamespace | GlyphItemFriend | NamespaceInternal |
GlyphGroupNamespace | GlyphItemProtected | NamespaceProtected |
GlyphGroupNamespace | GlifItemPrivate | NamespacePrivate |
GlyphGroupNamespace | GlyphItemShortcut | NamespaceShortcut |
GlyphGroupOperator | GlifItemPublic | OperatorPublic |
GlyphGroupOperator | GlifItemInternal | OperatorInternal |
GlyphGroupOperator | GlyphItemFriend | OperatorInternal |
GlyphGroupOperator | GlyphItemProtected | OperatorProtected |
GlyphGroupOperator | GlifItemPrivate | OperatorPrivate |
GlyphGroupOperator | GlyphItemShortcut | OperatorShortcut |
GlyphGroupProperty | GlifItemPublic | PropertyPublic |
GlyphGroupProperty | GlifItemInternal | PropertyInternal |
GlyphGroupProperty | GlyphItemFriend | PropertyInternal |
GlyphGroupProperty | GlyphItemProtected | PropertyProtected |
GlyphGroupProperty | GlifItemPrivate | PropertyPrivate |
GlyphGroupProperty | GlyphItemShortcut | PropertyShortcut |
GlyphGroupStruct | GlifItemPublic | StructurePublic |
GlyphGroupStruct | GlifItemInternal | YapıInternal |
GlyphGroupStruct | GlyphItemFriend | YapıInternal |
GlyphGroupStruct | GlyphItemProtected | Yapı Koruması |
GlyphGroupStruct | GlifItemPrivate | StructurePrivate |
GlyphGroupStruct | GlyphItemShortcut | StructureShortcut |
GlyphGroupTemplate | GlifItemPublic | TemplatePublic |
GlyphGroupTemplate | GlifItemInternal | ŞablonInternal |
GlyphGroupTemplate | GlyphItemFriend | ŞablonInternal |
GlyphGroupTemplate | GlyphItemProtected | Şablon Koruması |
GlyphGroupTemplate | GlifItemPrivate | TemplatePrivate |
GlyphGroupTemplate | GlyphItemShortcut | TemplateShortcut |
GlyphGroupTypedef | GlifItemPublic | TypeDefinitionPublic |
GlyphGroupTypedef | GlifItemInternal | TypeDefinitionInternal |
GlyphGroupTypedef | GlyphItemFriend | TypeDefinitionInternal |
GlyphGroupTypedef | GlyphItemProtected | TypeDefinitionProtected |
GlyphGroupTypedef | GlifItemPrivate | TypeDefinitionPrivate |
GlyphGroupTypedef | GlyphItemShortcut | TypeDefinitionShortcut |
GlyphGroupType | GlifItemPublic | TypePublic |
GlyphGroupType | GlifItemInternal | TypeInternal |
GlyphGroupType | GlyphItemFriend | TypeInternal |
GlyphGroupType | GlyphItemProtected | TypeProtected |
GlyphGroupType | GlifItemPrivate | TypePrivate |
GlyphGroupType | GlyphItemShortcut | TypeShortcut |
GlyphGroupUnion | GlifItemPublic | UnionPublic |
GlyphGroupUnion | GlifItemInternal | UnionInternal |
GlyphGroupUnion | GlyphItemFriend | UnionInternal |
GlyphGroupUnion | GlyphItemProtected | UnionProtected |
GlyphGroupUnion | GlifItemPrivate | UnionPrivate |
GlyphGroupUnion | GlyphItemShortcut | UnionShortcut |
GlyphGroupVariable | GlifItemPublic | FieldPublic |
GlyphGroupVariable | GlifItemInternal | FieldInternal |
GlyphGroupVariable | GlyphItemFriend | FieldInternal |
GlyphGroupVariable | GlyphItemProtected | Alan Koruması |
GlyphGroupVariable | GlifItemPrivate | FieldPrivate |
GlyphGroupVariable | GlyphItemShortcut | FieldShortcut |
GlyphGroupValueType | GlifItemPublic | ValueTypePublic |
GlyphGroupValueType | GlifItemInternal | ValueTypeInternal |
GlyphGroupValueType | GlyphItemFriend | ValueTypeInternal |
GlyphGroupValueType | GlyphItemProtected | ValueTypeProtected |
GlyphGroupValueType | GlifItemPrivate | ValueTypePrivate |
GlyphGroupValueType | GlyphItemShortcut | ValueTypeShortcut |
GlyphGroupIntrinsic | GlifItemPublic | ObjectPublic |
GlyphGroupIntrinsic | GlifItemInternal | ObjectInternal |
GlyphGroupIntrinsic | GlyphItemFriend | ObjectInternal |
GlyphGroupIntrinsic | GlyphItemProtected | ObjectProtected |
GlyphGroupIntrinsic | GlifItemPrivate | ObjectPrivate |
GlyphGroupIntrinsic | GlyphItemShortcut | ObjectShortcut |
GlyphGroupJSharpMethod | GlifItemPublic | MethodPublic |
GlyphGroupJSharpMethod | GlifItemInternal | MethodInternal |
GlyphGroupJSharpMethod | GlyphItemFriend | MethodInternal |
GlyphGroupJSharpMethod | GlyphItemProtected | MethodProtected |
GlyphGroupJSharpMethod | GlifItemPrivate | MethodPrivate |
GlyphGroupJSharpMethod | GlyphItemShortcut | MethodShortcut |
GlyphGroupJSharpField | GlifItemPublic | FieldPublic |
GlyphGroupJSharpField | GlifItemInternal | FieldInternal |
GlyphGroupJSharpField | GlyphItemFriend | FieldInternal |
GlyphGroupJSharpField | GlyphItemProtected | Alan Koruması |
GlyphGroupJSharpField | GlifItemPrivate | FieldPrivate |
GlyphGroupJSharpField | GlyphItemShortcut | FieldShortcut |
GlyphGroupJSharpClass | GlifItemPublic | ClassPublic |
GlyphGroupJSharpClass | GlifItemInternal | ClassInternal |
GlyphGroupJSharpClass | GlyphItemFriend | ClassInternal |
GlyphGroupJSharpClass | GlyphItemProtected | ClassProtected |
GlyphGroupJSharpClass | GlifItemPrivate | ClassPrivate |
GlyphGroupJSharpClass | GlyphItemShortcut | ClassShortcut |
GlyphGroupJSharpNamespace | GlifItemPublic | NamespacePublic |
GlyphGroupJSharpNamespace | GlifItemInternal | NamespaceInternal |
GlyphGroupJSharpNamespace | GlyphItemFriend | NamespaceInternal |
GlyphGroupJSharpNamespace | GlyphItemProtected | NamespaceProtected |
GlyphGroupJSharpNamespace | GlifItemPrivate | NamespacePrivate |
GlyphGroupJSharpNamespace | GlyphItemShortcut | NamespaceShortcut |
GlyphGroupJSharpInterface | GlifItemPublic | InterfacePublic |
GlyphGroupJSharpInterface | GlifItemInternal | InterfaceInternal |
GlyphGroupJSharpInterface | GlyphItemFriend | InterfaceInternal |
GlyphGroupJSharpInterface | GlyphItemProtected | InterfaceProtected |
GlyphGroupJSharpInterface | GlifItemPrivate | InterfacePrivate |
GlyphGroupJSharpInterface | GlyphItemShortcut | InterfaceShortcut |
GlyphGroupError | StatusError | |
GlyphBscFile | ClassFile | |
GlifAssembly | Başvuru | |
GlifLibrary | Kitaplık | |
GlyphVBProject | VBProjectNode | |
GlyphCoolProject | CSProjectNode | |
GlyphCppProject | CPPProjectNode | |
GlyphDialogId | Iletişim | |
GlyphOpenFolder | KlasörAçıldı | |
GlyphClosedFolder | Klasör Kapatıldı | |
GlifArrow | GoToNext | |
GlyphCSharpFile | CSFileNode | |
GlyphCSharpExpansion | Kod Parçacığı | |
GlyphKeyword | IntellisenseKeyword | |
GlyphInformation | StatusInformation | |
GlyphReference | ClassMethodReference | |
GlyphRecursion | Özyineleme | |
GlyphXmlItem | Etiket | |
GlyphJSharpProject | DocumentCollection | |
GlyphJSharpDocument | Belge | |
GlyphForwardType | GoToNext | |
GlyphCallersGraph | Ara | |
GlyphCallGraph | CallFrom | |
GlyphWarning | StatusWarning | |
GlyphMaybeReference | QuestionMark | |
GlyphMaybeCaller | Ara | |
GlifMaybeCall | CallFrom | |
GlyphExtensionMethod | ExtensionMethod | |
GlyphExtensionMethodInternal | ExtensionMethod | |
GlyphExtensionMethodFriend | ExtensionMethod | |
GlyphExtensionMethodProtected | ExtensionMethod | |
GlyphExtensionMethodPrivate | ExtensionMethod | |
GlyphExtensionMethodShortcut | ExtensionMethod | |
GlyphXmlAttribute | XmlAttribute | |
GlyphXmlChild | XmlElement | |
GlyphXmlDescendant | XmlDescendant | |
GlyphXmlNamespace | XmlNamespace | |
GlyphXmlAttributeQuestion | XmlAttributeLowConfidence | |
GlyphXmlAttributeCheck | XmlAttributeHighConfidence | |
GlyphXmlChildQuestion | XmlElementLowConfidence | |
GlyphXmlChildCheck | XmlElementHighConfidence | |
GlyphXmlDescendantQuestion | XmlDescendantLowConfidence | |
GlyphXmlDescendantCheck | XmlDescendantHighConfidence | |
GlyphCompletionWarning | IntellisenseWarning |
Eğitim
Öğrenme yolu
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Belgeler
Görüntü Kitaplığı Görüntüleyicisi - Visual Studio (Windows)
Görüntü özniteliklerini görüntülemenize ve işlemenize olanak sağlayan görüntü bildirimlerini yükleyen ve arayan Visual Studio Görüntü Kitaplığı Görüntüleyicisi aracı hakkında bilgi edinin.
Visual Studio Görüntü Kitaplığı'nı keşfetme - Visual Studio (Windows)
Visual Studio, Windows, Office ve diğer Microsoft yazılımlarında görünen uygulama görüntülerini içeren Visual Studio Görüntü Kitaplığı hakkında bilgi edinin.
Visual Studio İçin Görüntüler ve Simgeler - Visual Studio (Windows)
Visual Studio için görüntüleri ve simgeleri oluşturmak için kullanılan tasarım kavramları hakkında bilgi edinin.