人都是產(chǎn)品經(jīng)理社區(qū)推出產(chǎn)品經(jīng)理培訓(xùn)課程,讓BAT產(chǎn)品總監(jiān)手把手帶你學(xué)產(chǎn)品吧!
現(xiàn)在制作原型過工具多多,但Axure仍然是大多產(chǎn)品汪的得力工具。剛剛過去的8月份,Axure 8.0 BETA版本悄然發(fā)布,隨著大多數(shù)Axure粉絲的驚呼聲中,新版本在諸多功能上進(jìn)行了優(yōu)化。好,廢話不多說,這里掠過Axure入門基本操作,主要說說Axure 8.0給我?guī)硎裁葱麦w驗(yàn)。
最牛XX的功能要先說,Axure 8.0在交互方面還是下了苦功夫的。
首先,說明的是,反轉(zhuǎn)特效是在動(dòng)態(tài)面板中不同狀態(tài)下切換實(shí)現(xiàn)的。我們將動(dòng)態(tài)面板命名為1。之后設(shè)置兩個(gè)狀態(tài),state1與state2,這兩個(gè)狀態(tài)中各有一個(gè)不同顏色的矩形。設(shè)置單擊動(dòng)作,點(diǎn)擊使動(dòng)態(tài)面板1由state1切換到state2。
在這里自由選擇反轉(zhuǎn)的方向,便可自由實(shí)現(xiàn)轉(zhuǎn)場翻轉(zhuǎn)的交互效果了。
如果想做一個(gè)控件一邊移動(dòng)一邊旋轉(zhuǎn),大家想想現(xiàn)在在Axure 7.0中怎么實(shí)現(xiàn)呢??哈,不好做吧,Axure 8.0設(shè)置了多動(dòng)作并發(fā)機(jī)制,可以方便快捷的實(shí)現(xiàn)這一交互。而且Axure 8.0將選擇直接設(shè)置在動(dòng)作列表中,讓每個(gè)產(chǎn)品汪方便快捷的完整旋轉(zhuǎn)的交互樣式。
在Axure 8.0中制作旋轉(zhuǎn)效果異常簡單,直接添加動(dòng)作即可,相信每個(gè)產(chǎn)品汪一看就都明白,我也不在這里多廢話了。同時(shí)設(shè)置Move與Rotate這兩個(gè)動(dòng)作可以同時(shí)并發(fā),這樣是不是又能產(chǎn)生很多美好的交互。
在Axure 7.0中只有動(dòng)態(tài)面板可以設(shè)置尺寸,在Axure 8.0中擴(kuò)大了這個(gè)范疇,你能夠設(shè)置圖形部件、圖像、快照、熱點(diǎn)、文本框等其它形式的組件的尺寸大小。并且在Axure 8.0中增加了”anchor”功能,該功能可以確定以某坐標(biāo)作為原點(diǎn)(不動(dòng)點(diǎn))進(jìn)行放大。
在Axure 8.0的交互中中增加了”Fire Event”事件,大家把交互事件拉到最后就看見了!
這個(gè)事件的主要特點(diǎn)是相關(guān)觸發(fā)功能。什么意思呢,比如我點(diǎn)擊了控件A,除了觸發(fā)A控件的動(dòng)作,還可以方便的觸發(fā)B控件的各種交互事件。其實(shí)這個(gè)在Axure 7.0中也可以實(shí)現(xiàn),只是有了“Fire Event”讓這些觸發(fā)更方便快捷。
估計(jì)是Axure的設(shè)計(jì)者深知每個(gè)產(chǎn)品汪每天被老板虐,被開發(fā)虐,被銷售虐的事實(shí),特地增加了標(biāo)注部件,這個(gè)讓每個(gè)產(chǎn)品汪能夠好好做一個(gè)有情懷的產(chǎn)品汪。
這里重點(diǎn)說說”Snapshot”控件功能,別的標(biāo)簽控件都比較簡單,大家一看就會(huì)。我們將Snapshot控件拖入編輯頁,雙擊打開設(shè)定要顯示的頁面。這樣我們就可以看到設(shè)計(jì)頁面的縮略圖了,而且點(diǎn)擊還可以進(jìn)入相應(yīng)頁面。如果頁面有所改變,那Snapshot也會(huì)跟著改變,是不是很牛XX!
Duang~~~~,在Axure 8.0中增加了布爾運(yùn)算,可以對圖形進(jìn)行交并補(bǔ)運(yùn)算了,是不是很強(qiáng)大,媽媽再也不用擔(dān)心了。首先做個(gè)小小的知識(shí)補(bǔ)充,看看下圖明確一下布爾運(yùn)算的定義。
在Axure 8.0中,在右側(cè)屬性欄中可以找到如下四個(gè)圖標(biāo),分布根據(jù)形狀大家也能判斷出每個(gè)圖標(biāo)的用途。
這個(gè)工具其實(shí)不用多說,用來畫曲線的么,從此之后能夠在Axure中畫圖了。畫畫我實(shí)在不行,只能畫了一個(gè)丑陋的大白….
其實(shí)Axure 8.0還增加了一些實(shí)用的小功能,比如:部件尺寸的比例鎖定、更多的圖形編輯功能等。這些功能使我們的原型制作更加順暢,我們一起來期待Axure 8.0正式版的發(fā)布。
本文由 @Gery 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理 ,未經(jīng)許可,禁止轉(zhuǎn)載。
以前的項(xiàng)目中,做攝像頭的圖片采集,我們一般還是需要做一個(gè)封裝處理的,在較新版本的DevExpress控件里面,增加了一個(gè)CameraControl控件,可以直接調(diào)用攝像頭顯示的,因此也可以做頭像采集等功能,本文介紹如何基于這個(gè)控件做相關(guān)的圖像采集操作。
DevExpress WinForms Subscription官方最新版免費(fèi)下載試用,歷史版本下載,在線文檔和幫助文件下載-慧都網(wǎng)
該控件從15.1開始,就開始加入控件組了,控件的使用很簡單,直接拖動(dòng)到界面就可以在WinForm界面上使用了。本案例基于16.1進(jìn)行開發(fā)的,因此也都具有這些控件模塊的。
例如我們直接把CameraControl控件拖動(dòng)到界面上,然后運(yùn)行界面就可以看到如下效果。
在攝像的界面上,有一個(gè)配置的選項(xiàng),可以對攝像頭的分辨率等參數(shù)進(jìn)行設(shè)置處理。
同時(shí)在PictureEdit控件上,也可以開啟攝像頭采集功能,只需要在控件屬性里設(shè)置一下即可:
運(yùn)行界面得到效果如下所示。
這個(gè)采集圖片的菜單項(xiàng)文字沒有漢化,因此有點(diǎn)怪異,我們也可以通過使用其內(nèi)置的對話框(TakePictureDialog )進(jìn)行圖片采集操作。
具體代碼如下所示:
private void btnInternal_Click(object sender, EventArgs e)
{
TakePictureDialog d = new TakePictureDialog();
if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
this.pictureEdit1.Image = d.Image;
}
}
調(diào)用得到的對話框是內(nèi)置的,界面也是無法修改調(diào)整,包括文字內(nèi)容。
為了更好的實(shí)現(xiàn)對頭像的采集操作,我們可以仿照這個(gè)對話框模塊,做一個(gè)自定義的窗體,實(shí)現(xiàn)攝像頭圖像的采集操作,如下所示。
同時(shí)我們在對話框窗體里面設(shè)置一個(gè)Public的圖像對象屬性,如下所示:
/// <summary>
/// 采集圖片
/// </summary>
public Image CameraImage { get; set; }
這樣我們就方便設(shè)置和提取圖像信息了。
捕獲圖像的代碼就是從攝像控件里面獲取一個(gè)快照就可以了,如下所示。
private void btnCapture_Click(object sender, EventArgs e)
{
this.CameraImage = this.cameraControl1.TakeSnapshot();
this.pictureEdit1.Image = this.CameraImage;
}
然后在窗體退出的時(shí)候,記得釋放攝像頭的資源,否則第二次就提示占用,無法使用了。
private void FrmCamera_FormClosing(object sender, FormClosingEventArgs e)
{
this.cameraControl1.Dispose();
}
整個(gè)對話框的完整代碼如下所示。
public partial class FrmCamera : Form
{
/// <summary>
/// 采集圖片
/// </summary>
public Image CameraImage { get; set; }
public FrmCamera()
{
InitializeComponent();
}
private void btnOK_Click(object sender, EventArgs e)
{
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
private void btnCapture_Click(object sender, EventArgs e)
{
this.CameraImage = this.cameraControl1.TakeSnapshot();
this.pictureEdit1.Image = this.CameraImage;
}
private void FrmCamera_FormClosing(object sender, FormClosingEventArgs e)
{
this.cameraControl1.Dispose();
}
}
最后運(yùn)行可以得到界面如下所示。
這種處理方式比較好,我在該控件出來之前,在基礎(chǔ)界面類庫里面,使用肖像控件來處理攝像頭圖像采集的。
例如在會(huì)員管理系統(tǒng)里面,就是利用肖像管理控件,通過之前的攝像頭公用類庫實(shí)現(xiàn)的圖形采集操作的。
這里其實(shí)是利用一個(gè)攝像頭類庫來實(shí)現(xiàn)的,不過現(xiàn)在既然DevExpress本身就提供控件支持,那么我們也可以直接利用它了,這樣更加方便,更少代碼。
DevExpress WinForm控件| 下載試用
DevExpress WinForm擁有180+組件和UI庫,能為Windows Forms平臺(tái)創(chuàng)建具有影響力的業(yè)務(wù)解決方案。DevExpress WinForms能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無論是Office風(fēng)格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!
本文轉(zhuǎn)載自:博客園 - 伍華聰
想象一下,創(chuàng)建的擴(kuò)展比以往任何時(shí)候都運(yùn)行得更快、更流暢!如果您最近還沒有跟上,我們一直在努力改進(jìn) VisualStudio. Extensibility SDK。VisualStudio. Extensibility 幫助您構(gòu)建在主 IDE 進(jìn)程之外運(yùn)行的擴(kuò)展,以提高性能和可靠性。它還提供了一個(gè)時(shí)尚而直觀的基于 .NET 8 的 API 和全面且維護(hù)良好的文檔,可以幫助您開發(fā)出色的擴(kuò)展。
這個(gè)17.10版本建立在我們以前的版本之上,它帶來了全新的調(diào)試體驗(yàn),使您更容易讓您的擴(kuò)展以您期望的方式運(yùn)行。我們還增強(qiáng)了遠(yuǎn)程UI特性,添加了提示用戶的新方法,并繼續(xù)向項(xiàng)目查詢 API 添加功能。
請?jiān)L問 https://aka.ms/VisualStudio.Extensibility 獲取最新的文檔和安裝說明。我們鼓勵(lì)您通過 GitHub 倉庫的問題跟蹤報(bào)告錯(cuò)誤并建議功能,在那里您還可以找到擴(kuò)展示例來幫助您開始。
VisualStudio.Extensibility 有什么新功能?
您想要比以前更快速、更容易地開發(fā)和調(diào)試擴(kuò)展嗎?我們的17.10版本增加了以下功能來幫助您做到這一點(diǎn):
- 調(diào)試您的擴(kuò)展使用我們新的 Diagnostics Explorer
- 在 UI 中利用 XAML 資源
- 讓您的擴(kuò)展用戶選擇文件或目錄
- 使用改進(jìn)的查詢 API 跟蹤項(xiàng)目更改
調(diào)試您的擴(kuò)展使用我們新的 Diagnostics Explorer
我們已經(jīng)創(chuàng)建了一個(gè)強(qiáng)大的新工具來調(diào)試您的擴(kuò)展,叫做 VisualStudio.Extensibility Diagnostics Explorer,可以在 Visual Studio Marketplace 中找到它。有了它,您就能像 Visual Studio 那樣看到擴(kuò)展,從而確保您正確地配置了您的擴(kuò)展。
這個(gè)工具本身是作為進(jìn)程內(nèi)的 VisualStudio. Extensibility 擴(kuò)展編寫的。可以幫助您回答諸如“為什么我的命令沒有顯示在我期望它在 IDE 中的位置?”或“為什么我的擴(kuò)展沒有在我期望的時(shí)候被激活?”
檢查配置
VisualStudio.Extensibility 通過消除手動(dòng)維護(hù)單獨(dú)的元數(shù)據(jù)文件的需要,已經(jīng)使您更容易配置擴(kuò)展。現(xiàn)在,我們在此基礎(chǔ)上構(gòu)建了 Diagnostics Explorer,它可以讓您準(zhǔn)確地看到 Visual Studio 發(fā)現(xiàn)了哪些擴(kuò)展和組件,以及每個(gè)發(fā)現(xiàn)項(xiàng)的配置。
例如,如果您沒有在 IDE 中看到命令,您可以使用命令選項(xiàng)卡 Diagnostics Explorer 查看已貢獻(xiàn)給 Visual Studio 的任何命令。如果它沒有出現(xiàn)在列表中,這是一個(gè)提示,需要再次檢查您的配置以確保它被發(fā)現(xiàn)。如果它存在,但未啟用或不可見,則可能需要檢查激活約束。如果它被標(biāo)記為啟用和可見,您可以使用下拉菜單來查看命令放置,以確保您已經(jīng)正確地放置了它。
使用 Commands 選項(xiàng)卡,您可以檢查命令、命令集、組、菜單和工具欄、命令位置和動(dòng)態(tài)命令錨點(diǎn)。其他選項(xiàng)卡允許您檢查組件的其他功能區(qū)域,包括工具窗口、文檔類型、文本視圖等。當(dāng)我們在未來的版本中添加功能時(shí),您將能夠在 Diagnostics Explorer 中檢查任何新組件。
查看實(shí)時(shí)事件日志
我們知道,像您這樣的擴(kuò)展開發(fā)人員有時(shí)開發(fā)的擴(kuò)展可能需要處理整個(gè) IDE 中的事件,例如正在執(zhí)行的命令,正在打開的工具窗口或正在創(chuàng)建的 TextView,所以我們添加了一個(gè)實(shí)時(shí)事件查看器,使您能夠?qū)崟r(shí)觀察這些事件及其屬性:
創(chuàng)建更好的激活約束
Diagnostics Explorer 中的 Activation Constraints 選項(xiàng)卡為您提供了創(chuàng)建激活約束時(shí)每個(gè)可用值的當(dāng)前狀態(tài)。使用此選項(xiàng)卡,您可以使 IDE 進(jìn)入您想要用于激活的狀態(tài)(例如構(gòu)建項(xiàng)目或打開 markdown 文件),然后您可以檢查每個(gè)可用表達(dá)式的值,以幫助您創(chuàng)建約束。
例如,假設(shè)您希望一個(gè)命令僅在編輯器中打開 C# 文件時(shí)才可見。使用 Diagnostics Explorer,您可以打開一個(gè) C# 文件,使用 Activation Constraints 選項(xiàng)卡來幫助您確定需要哪些表達(dá)式來創(chuàng)建約束:
EnabledWhen = ActivationConstraint.ClientContext(ClientContextKey.Shell.ActiveEditorContentType, "CSharp").
在 UI 中利用 XAML 資源
XAML 資源允許您定義可以在整個(gè)項(xiàng)目中使用的對象,如顏色、筆刷或樣式,從而加速UI開發(fā)。通過這個(gè)版本的 VisualStudio. Extensibility:我們正在添加對 XAML 資源的支持,以幫助您為擴(kuò)展開發(fā)出色的UI!
與我們的其他遠(yuǎn)程UI功能(如UI控件)一致,您可以將任何帶有 ResourceDictionaries 的XAML文件定義為嵌入在 .csproj 文件中的資源:
<ItemGroup>
<EmbeddedResource Include="\XamlResources.*xaml" />
<Page Remove="XamlResources.*xaml" />
</ItemGroup>
一旦定義,很容易將您的資源包含在其他組件中,以便它們可以在整個(gè)項(xiàng)目的 XAML 中被引用:
ResourceDictionaries.AddEmbeddedResource("XamlResources.xaml")
您甚至可以本地化您的資源:查看 Modal Dialog 示例獲取更多信息,并讓我們知道您的想法!
讓您的擴(kuò)展用戶選擇文件或目錄
在我們之前對用戶提示和自定義對話框的支持的基礎(chǔ)上,我們增加了從擴(kuò)展中顯示文件和目錄選擇器提示的能力。例如,您可以使用 ShowOpenFileDialogAsync() 方法來提示用戶選擇一個(gè)文件來打開:
VisualStudioExtensibility.Shell().ShowOpenFileDialogAsync(options, cancellationToken);
使用新的 API,您可以提示用戶:
- 選擇一個(gè)文件打開
- 選擇要打開一個(gè)或多個(gè)文件
- 選擇單個(gè)文件來另存為
- 選擇要打開的目錄
與往常一樣,如果有其他類型的用戶提示對您的擴(kuò)展很重要,請通過我們的問題跟蹤告訴我們。
使用改進(jìn)的查詢 API 跟蹤項(xiàng)目更改
我們的 17.10 版本為項(xiàng)目查詢 API 添加了三個(gè)新特性。
跟蹤查詢結(jié)果的更改
TrackUpdatesAsync() 方法可以在項(xiàng)目系統(tǒng)查詢中使用,以創(chuàng)建一個(gè) IObserver 對象來跟蹤您的查詢中項(xiàng)目或解決方案狀態(tài)的變化。例如,如果您想跟蹤項(xiàng)目中文件的更新時(shí)間,您可以使用:
var query = await myProject
.Files
.With(f => f.FileName)
.TrackUpdatesAsync(new TrackerObserver(), CancellationToken.None);
在這個(gè)例子中,TrackerObserver 實(shí)現(xiàn)了 IObserver<IQueryTrackUpdates<IFileSnapshot>>,所以您可以使用您自己的自定義邏輯來處理更新事件。
查詢項(xiàng)目規(guī)則
項(xiàng)目查詢 API 中的每個(gè)項(xiàng)目現(xiàn)在都包含一個(gè) RulesResults 特性,其中包括規(guī)則名稱和一個(gè)項(xiàng)列表。您可以通過調(diào)用指定配置的 RuleResultsByName() 來訪問這些規(guī)則。
var results = await querySpace
.Projects
.With(p => p.Path)
.With(p => p.ActiveConfigurations
.With(c => c.RuleResultsByRuleName("CompilerCommandLineArgs")
.With(r => r.RuleName)
.With(r => r.Items
.With(i => i.Name))))
.ExecuteQueryAsync();
跳過查詢結(jié)果
我們添加了 Skip() 方法,使您能夠跳過查詢中的結(jié)果。
var projects = await queryableSpace.Projects
.With(proj => proj.Name)
.Skip(1)
.ExecuteQueryAsync();
這里,跳過第一個(gè)項(xiàng)目,返回其余的項(xiàng)目。
如果沒有您的參與我們做不到這些!
我們需要您的幫助,因?yàn)槲覀儗⒗^續(xù)開發(fā) VisualStudio.Extensibility!請嘗試這個(gè)預(yù)覽版,讓我們知道您的想法。查看文檔,瀏覽代碼示例,并構(gòu)建您的第一個(gè)擴(kuò)展。您可以通過我們的問題跟蹤發(fā)送反饋、報(bào)告問題或功能需求。
您還可以在我們的 VisualStudio. Extensibility GitHub repo 中找到有關(guān)突破性更改和已知問題的信息。
我們正在優(yōu)先考慮擴(kuò)展程序要求的功能,所以請嘗試一下 VisualStudio. Extensibility,并與我們分享您的想法!
原文鏈接:https://devblogs.microsoft.com/visualstudio/visualstudio-extensibility-17-10/
*請認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。