2019年03月10日 12:47
原创作品,转载时请务必以超链接形式标明文章原始出处,否则将追究法律责任。

西安软件园零一广场,现在简直了,周六上班还要排队。在这里的同学们都知道,这是百度推广的人员在这楼上,3楼,18楼,21楼,主要是这三层,由此可想百度推广是多么挣钱,三层楼500多人,全是推广人员,我简直不能相信,大家脑补。还有58同城聚赢网络,也是做推广的,也是几百人,由此可见这块大蛋糕没人想放弃。要想挣钱,就要做推广,你要知名,就要给百度掏钱,否则我就搜不到你,你的排名也非常靠后,比如我这个网站,你恐怕只能输入域名才能搜出来。接下来看看这排队的阵势,X了狗了。

捕获.PNG

今天我们看一下,WPF中的图片上传。首先看一下人员信息维护界面,走起。

image.png

在这个人头像上,我们看见一个设置按钮。没错,就是这只用户图像的。

首先我们需要定义一个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,今天就到这里,下次再见。

发表评论
匿名  
用户评论
暂无评论