2019年03月10日 12:47
原创作品,转载时请务必以超链接形式标明文章原始出处,否则将追究法律责任。
西安软件园零一广场,现在简直了,周六上班还要排队。在这里的同学们都知道,这是百度推广的人员在这楼上,3楼,18楼,21楼,主要是这三层,由此可想百度推广是多么挣钱,三层楼500多人,全是推广人员,我简直不能相信,大家脑补。还有58同城聚赢网络,也是做推广的,也是几百人,由此可见这块大蛋糕没人想放弃。要想挣钱,就要做推广,你要知名,就要给百度掏钱,否则我就搜不到你,你的排名也非常靠后,比如我这个网站,你恐怕只能输入域名才能搜出来。接下来看看这排队的阵势,X了狗了。
今天我们看一下,WPF中的图片上传。首先看一下人员信息维护界面,走起。
在这个人头像上,我们看见一个设置按钮。没错,就是这只用户图像的。
首先我们需要定义一个Popup,用来显示这个按钮,代码如下
<Popup x:Name="Pop_Photo" IsOpen="{Binding IsOpen}" StaysOpen="False" Placement="Relative" PlacementTarget="{Binding ElementName=Img_Photo}" AllowsTransparency="True" PopupAnimation="Fade" HorizontalOffset="15" VerticalOffset="100"> <Canvas Margin="150"> <WrapPanel > <Button Command="{Binding PhotoCommand}" Margin="15" Style="{DynamicResource btn-success}">设置</Button> </WrapPanel> </Canvas> </Popup>
它的显示与隐藏由绑定属性IsOpen决定,然后设置它的显示目标元素为我们的image控件。
<Border BorderBrush="Black" BorderThickness="1" Grid.Row="0" Grid.Column="3" Grid.RowSpan="4" Margin="5,0,0,0"> <Image x:Name="Img_Photo" Source="/Images/System/default.jpg" Stretch="Fill" Height="150" Width="130"></Image> </Border>
然后设置相对图片控件的偏移量,然后我们还要设置这个按钮显示的时机和消失的时机。
我们给这个图像控件注册两个trigger,一个是MouseEnter,一个是MouseLeave。
private void InitTriggerAction() { this.Img_Photo.AttchEventTriggerAction(new BaseTrigger<DependencyObject, AircrewCreate>((obj) => { this.IsOpen = true; }), EventEnums.MouseEnter.ToString()); this.Pop_Photo.AttchEventTriggerAction(new BaseTrigger<DependencyObject, AircrewCreate>((obj) => { this.IsOpen = false; }), EventEnums.MouseLeave.ToString()); }
不用我多说,鼠标进入显示,鼠标离开消失。
接下来我们再看一下图片保存逻辑,其实这里图像由于比较小,所以就直接存储到数据库了。
private async void CreatePhoto() { var openDialog = new OpenFileDialog { Filter = "All Image Files|*.bmp;*.gif;*.jpeg;*.jpg;*.png;*.tif", FilterIndex = 0 }; if (openDialog.ShowDialog().GetValueOrDefault(false)) { string filePath = openDialog.FileName; try { MemoryStream m = new MemoryStream(); Bitmap bp = new Bitmap(filePath); bp.Save(m, bp.RawFormat); byte[] b = m.GetBuffer(); if (b.Length > 1024 * 1024 * MAXPHOTODSIZE) { this.ShowMessage(string.Format(CommonMsgResource.Msg_ImageOverSize, MAXPHOTODSIZE)); return; } string base64string = Convert.ToBase64String(b); var request = new AircrewPhotoRequest { TransactionNumber = this.AircrewModel.TransactionNumber, ActionUserID = CPApplication.CurrentUser.UserName, PhotoBinary = base64string }; await this.facade.UpdateAircrewPhoto(request); this.ShowMessage(CommonMsgResource.Msg_SetSucess); this.aircrewEntity = await this.facade.GetAircrewByKey(this.AircrewModel.TransactionNumber); this.AircrewModel = AutoMapper.Mapper.Map<AircrewEntity, AircrewModel>(aircrewEntity); this.ConvertPhotoToShow(); } catch { this.ShowMessage(CommonMsgResource.Msg_FileException); } } }
主要是将图片转化为base64位存入数据库。OK,今天就到这里,下次再见。
下一篇 WPF Plc-1200读写
发表评论
匿名
用户评论
暂无评论