Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. WPF
  4. Help with a custom layered bitmap control in WPF

Help with a custom layered bitmap control in WPF

Scheduled Pinned Locked Moved WPF
helpwinformscsharpgraphicsc++
2 Posts 1 Posters 1 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    BryanWilkins
    wrote on last edited by
    #1

    Hi, First of all, i had no intention of this being so long, but i needed to be thourough, so here goes. I have been a Code Project member for so long that i feel guilty for not contributing more to this wonderful site. I recently have begun converting a Windows Form application that I wrote to WPF. I can safely say that I am really comfortable using Windows Forms because I have been programming using them for years. Before that, MFC windows apps. I'm not afraid of a challenge, and I really believe that in the long run my application will be better for making the transition to WPF. Thus, comes the issue. My Application is a retail photo editing application that is used exclusively in our stores to sell printed photos to people These photos have been adorned with "Borders" or "Frames" that are bitmap based. Basically, I have a set of "Layers" that comprise my product. The picture, the Bitmap border, and maybe some little adorner decals and a text layer or two. Each layer has a z-order and in my WinForms app is neatly rendered by a custom control that i wrote using old style GDI+ drawimage commands and a-lot of refreshes everytime something changed. When I say everytime something changed i mean if the user dragged the photo to a new position under the border or changed the zoom, colors, saturation etc the application would have to redraw everything reflecting the changes. Needless to say, that in order to achieve realtime rendering of all these effects, i had to use a scaling factor and cached, smaller bitmaps in order to get these things to happen in realtime. It was a real pain to keep everything straight. Then comes along WPF and turns everything upside down for me. I now have a new rendering system that natively supports transparency and has pixel shaders for the effects such as saturation and chroma key. I have done some tests with raw bitmaps and all of these effects can be achieved realtime with no problems on todays hardware. Everythings good right? Wrong. I have converted everything but what i call the main Workspace control. I am soooo stuck on this it isn't funny to me anymore. I have been reading everything i can get my hands on and I guess I am too close to the problem because I am hopelessly stuck trying to decide how to implement this. I have a .xml file that describes how a picture should be placed in a border. meaning the top left and size depending on the orientation and aspect ratio. This is already done from my winforms application, so i have all of the in

    B 1 Reply Last reply
    0
    • B BryanWilkins

      Hi, First of all, i had no intention of this being so long, but i needed to be thourough, so here goes. I have been a Code Project member for so long that i feel guilty for not contributing more to this wonderful site. I recently have begun converting a Windows Form application that I wrote to WPF. I can safely say that I am really comfortable using Windows Forms because I have been programming using them for years. Before that, MFC windows apps. I'm not afraid of a challenge, and I really believe that in the long run my application will be better for making the transition to WPF. Thus, comes the issue. My Application is a retail photo editing application that is used exclusively in our stores to sell printed photos to people These photos have been adorned with "Borders" or "Frames" that are bitmap based. Basically, I have a set of "Layers" that comprise my product. The picture, the Bitmap border, and maybe some little adorner decals and a text layer or two. Each layer has a z-order and in my WinForms app is neatly rendered by a custom control that i wrote using old style GDI+ drawimage commands and a-lot of refreshes everytime something changed. When I say everytime something changed i mean if the user dragged the photo to a new position under the border or changed the zoom, colors, saturation etc the application would have to redraw everything reflecting the changes. Needless to say, that in order to achieve realtime rendering of all these effects, i had to use a scaling factor and cached, smaller bitmaps in order to get these things to happen in realtime. It was a real pain to keep everything straight. Then comes along WPF and turns everything upside down for me. I now have a new rendering system that natively supports transparency and has pixel shaders for the effects such as saturation and chroma key. I have done some tests with raw bitmaps and all of these effects can be achieved realtime with no problems on todays hardware. Everythings good right? Wrong. I have converted everything but what i call the main Workspace control. I am soooo stuck on this it isn't funny to me anymore. I have been reading everything i can get my hands on and I guess I am too close to the problem because I am hopelessly stuck trying to decide how to implement this. I have a .xml file that describes how a picture should be placed in a border. meaning the top left and size depending on the orientation and aspect ratio. This is already done from my winforms application, so i have all of the in

      B Offline
      B Offline
      BryanWilkins
      wrote on last edited by
      #2

      I figured that I would post what I did here for others to see how I approached it and to comment on my thoughts. I took a step back and with a deep breath did some research on custom panel layouts. It seems that I really needed to understand this because i made a custom panel layout somewhat akin to a cross between a Grid and a Canvas. Got it to auto size the composited bitmaps into the size of the panel by figuring out a global scale in the MeasureOverride. That way i still get the benefit of attaching pixel shaders to the image objects if i need to do saturation,chroma key etc... Please tell me if you think this could help others so i can think about making it an article if useful. Bryan

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • World
      • Users
      • Groups