Aurigma Forums
 » 
Graphics Mill
 » 
Samples – Graphics Mill
 » 
HOWTO: Create Overview-Window for AJAX BitmapViewer
 
		
        
            
            
	
    | 
Rank: Advanced Member
 Groups: Guest
Joined: 1/31/2005(UTC)
 Posts: 458
 
 Was thanked: 5 time(s) in 5 post(s)
 | 
            
	      
                Hi everybody, There was a question from one of our customers - how to create "overview" window for AJAX BitmapViewer control - something like "Navigator" control in Photoshop but simpler, just to indicate which part of large image is currently displayed in the viewer.  Maybe it will be interesting for somebody else, so I posted the answer here. The idea is very simple - place small thumbnail on the same page and handle all zoom & scroll events of the BitmapViewer to reflect viewport changes. You can find the sample project in the attachment. It was created with VS2005 and you will need to set references to GraphicsMill and AjaxControls DLLs (they were excluded from the archive to decrease its size).   Few words about implementation: in server-side code we load bitmap into the BitmapViewer control and also we create small thumbnail and put it into the AJAX controls public cache. Later it will be linked with a simple "Image" element on the page. The frame on the thumbnail is just a transparent "div" element with visible border. So all other manipulations are performed on client. As usual - any feedback is greatly appreciated, so feel free to comment this post ;) Edited by moderator Monday, May 28, 2012 8:36:35 PM(UTC)
 | Reason: Not specified File Attachment(s): Alex Kon attached the following image(s): | 
|  | 
	
    | 
             | 
            
         | 
    |  | 
        
        
        
         
		   
        
            
            
	
    | 
Rank: Advanced Member
 Groups: Guest
Joined: 1/31/2005(UTC)
 Posts: 458
 
 Was thanked: 5 time(s) in 5 post(s)
 | 
            
	      
                Hi everybody, And here is second version of the same sample. Now it not only displays current position in overview window, but also allows user to change it by dragging frame. And we added slider-bar which changes BitmapVievew zoom, so it now looks like Photoshops's Navigator pane. This sample uses slider-bar from AJAX controls toolkit which can be found on official Microsoft ASP.NET site .      Edited by user Sunday, April 6, 2008 4:36:34 PM(UTC)
 | Reason: Not specified File Attachment(s): Alex Kon attached the following image(s): | 
|  | 
	
    | 
             | 
            
         | 
    |  | 
        
        
        
    
		
        
            
            
	
    | 
Rank: Newbie
 Groups: Guest
Joined: 2/7/2008(UTC)
 Posts: 4
 
 | 
            
	      
                hi Alex,
 1) How can i disable right click on the bitmapviewer control. i want to prevent the users right clicking on the bitmapviewer and  click 'save picutre as' and get the visible portion of image.
 
 2)Mouse drag on the overview window in firefox doesn't work. If you have any known browser issues please let me know.
 
 
 Thanks
 Praveen
 
 
 | 
	
    | 
             | 
            
         | 
    |  | 
        
        
        
         
		   
        
            
            
	
    | 
Rank: Advanced Member
 Groups: Guest
Joined: 7/28/2003(UTC)
 Posts: 1,660
 
 Thanks: 5 timesWas thanked: 76 time(s) in 74 post(s)
 
 | 
            
	      
                Quote:1) How can i disable right click on the bitmapviewer control. i want to prevent the users right clicking on the bitmapviewer and click 'save picutre as' and get the visible portion of image. You should modify _addTiles  method of BitmapViewer  class (BitmapViewer.js ): Code:	_addTiles : function(s) {
		for (var z = 0; z < s.tiles.length; z++) {
			var t = s.tiles[z];
			//Add the tile
			var cl = new GraphicsMill.Rectangle(t.x, t.y, t.w, t.h);
			var wl = this.workspaceToControlRectangle(cl).round();
			wl = this.controlToContentRectangle(wl);
			var url = String.format(s.baseName, z);	
			
			var i = this._doc.createElement("img");
			i.galleryImg = "no";
			
			i.width = wl.width;
			i.height = wl.height;
			i.style.position = "absolute";
			i.style.left = wl.x + "px";
			i.style.top = wl.y + "px";
			i.display = "none";
			//i.style.borderWidth = "1px";
			//i.style.borderColor = "red";
			//i.style.borderStyle = "solid";
			i.ondrag = function() {
				return false
			};
			//NEW CODE
			i.oncontextmenu = function() {
				return false
			};
			//END NEW CODE
			this._tilesCtx.appendChild(i);
			this._tiles.push({location : cl, zoom : s.zoom, url : url, img : i});
		}
	},
 | 
| Best regards, Fedor Skvortsov
 | 
	
    | 
             | 
            
         | 
    |  | 
        
        
        
    
		
        
            
            
	
    | 
Rank: Advanced Member
 Groups: Guest
Joined: 8/3/2003(UTC)
 Posts: 1,070
 
 Thanks: 1 timesWas thanked: 12 time(s) in 12 post(s)
 
 | 
            
	      
                Hello, To get rid of the problem with drag operation on overview window in Firefox3 you need to disable selection for frame1  element (rectangle in the overview window). Here is the code that you need to append to initialize: function()  method in OverviewWindow.js : Code:        var r = this.get_frame();
        r.unselectable = "on";
        r.style.MozUserSelect = "none";
        r.style.cursor = "default";
 I have attached the modified project to this post. Edited by user Tuesday, July 29, 2008 5:03:14 PM(UTC)
 | Reason: Not specified | 
|  | 
	
    | 
             | 
            
         | 
    |  | 
        
        
        
    
Aurigma Forums
 » 
Graphics Mill
 » 
Samples – Graphics Mill
 » 
HOWTO: Create Overview-Window for AJAX BitmapViewer
 
    
        Forum Jump
         
    
    You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.