Archive for the ‘Tips & Trick’ Category

Resize a picture to a fixed size

This function creates a thumbnail that is exactly as big as the size you give it. The image is resized to best fit the size of the thumbnail. If it does not fit exactly in both directions, it’s centered in the thumnail.

The Function:

     function thumbnail_box($img, $box_w, $box_h) {
          //create the image, of the required size
          $new = imagecreatetruecolor($box_w, $box_h);
          if($new === false) {
               //creation failed -- probably not enough memory
               return null;
          }

          //Fill the image with a light grey color
          //(this will be visible in the padding around the image,
          //if the aspect ratios of the image and the thumbnail do not match)
          //Replace this with any color you want, or comment it out for black.
          //I used grey for testing =)
          $fill = imagecolorallocate($new, 200, 200, 205);
          imagefill($new, 0, 0, $fill);

          //compute resize ratio
          $hratio = $box_h / imagesy($img);
          $wratio = $box_w / imagesx($img);
          $ratio = min($hratio, $wratio);

          //if the source is smaller than the thumbnail size,
          //don't resize -- add a margin instead
          //(that is, dont magnify images)
          if($ratio > 1.0)
               $ratio = 1.0;

          //compute sizes
          $sy = floor(imagesy($img) * $ratio);
          $sx = floor(imagesx($img) * $ratio);

          //compute margins
          //Using these margins centers the image in the thumbnail.
          //If you always want the image to the top left,
          //set both of these to 0
          $m_y = floor(($box_h - $sy) / 2);
          $m_x = floor(($box_w - $sx) / 2);

          //Copy the image data, and resample
          //If you want a fast and ugly thumbnail,
          //replace imagecopyresampled with imagecopyresized
          if(!imagecopyresampled($new, $img, $m_x, $m_y, 0, 0, $sx, $sy, imagesx($img), imagesy($img))) {
               //copy failed
               imagedestroy($new);
               return null;
          }

          //copy successful
          return $new;
     }

Example Usage:

$i = imagecreatefromjpeg("img.jpg");
$thumb = thumbnail_box($i, 210, 150);
imagedestroy($i);

if(is_null($thumb)) {
    /* image creation or copying failed */
    header('HTTP/1.1 500 Internal Server Error');
    exit();
}

header('Content-Type: image/jpeg');
imagejpeg($thumb);

Customizing the Calendar control in ASP.NET

Recently I had to work on customizing an ASP.NET Calendar control by adding text to the day cells for my team’s Logon Message project. This proved to be not as straight-forward as I thought so here is what I did in case someone else might want to do the same.

The best place to modify the text in a cell seems to be the DayRender event handler. So the first thing I tried was to just modify the e.Cell.Text property like this:

void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
     e.Cell.Text += “My text”;
}

The main problem was that after adding text to a day cell in the control I wasn’t able to select that day by clicking on the day number. Here is what you can do if you still want the select day functionality:

void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
     AddTextToDayCell(e, Datetime.Today, “MyText“);
}

void AddTextToDayCell(DayRenderEventArgs e, Datetime d, string text)
{
     if(e.Day.Date == d.Date)
     {
          string ID = ((System.TimeSpan)(e.Day.Date - new DateTime(2000, 1, 1))).Days.ToString();

          e.Cell.Text = "<a href=\"javascript:__doPostBack('Calendar1','" + ID + "')\" style=\"color:#663399\">" + e.Day.DayNumberText; //assuming the name of the calendar control is Calendar1.

          e.Cell.Text +=text;
     }
}

If you want your new text to act as a link to some other URL, you could modify the AddTextToCell function as follows:

private void Calendar1_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e)
{
     AddTextToDayCell(e, DateTime.Today, "MyText", "<a href="http://fathir.com/">http://fathir.com</a>"); //this will add the MyText link to <a href="http://fathir.com/">http://fathir.com</a> to the current day's cell
}

void AddTextToDayCell(DayRenderEventArgs e, DateTime d, string text, string URL)
{
     if(e.Day.Date == d.Date)
     {
          string ID = ((System.TimeSpan)(e.Day.Date - new DateTime(2000, 1, 1))).Days.ToString();
          e.Cell.Text = "<a href=\"javascript:__doPostBack('Calendar1','" + ID + "')\" style=\"color:#663399\">" + e.Day.DayNumberText;
          e.Cell.Text += "<br /> <a href=\""+ URL + "\">" + text;
     }
}

Hope you’ll find this helpful.

Editing the Windows Registry

In this tutorial, I’m going to go through the code required to edit the Windows registry using C#. This will include creating new keys and values as well as modifying existing ones.

The registry is a great way to save information between application launches. Many applications use the registry to save information about dialog sizes and placements. That way the user doesn’t have to resize and move dialogs every time the program starts.

Let’s start by creating a new registry key. The first thing we need to decide is where to put our new key. If you bring up the Registry Editor – type “regedit” in the run bar, you’ll notice the registry looks a lot like a file explorer. “Computer” is the root node with several child folders branching from it.

Most software packages will have a registry key inside

HKEY_LOCAL_MACHINE->SOFTWARE

These keys are available no matter who is logged in and is a good place to stick general application values. Let’s put a key in this folder called “My Registry Key”.

Registry.LocalMachine.CreateSubKey(“SOFTWARE\\My Registry Key”);

Registry is a class located in the Microsoft.Win32 namespace. Registry.LocalMachine means where going to be modifying the HKEY_LOCAL_MACHINE registry key. We passed in “SOFTWARE\\My Registry Key” to CreateSubKey because we wanted our new key created inside the “SOFTWARE” key. CreateSubKey has the option to take more arguments – mostly dealing with access and security, but they’re not important for this tutorial.

If you open the Registry Editor again, you’ll now see you’re new key. A key without any values is pretty useless, so let’s add a string value to it.

RegistryKey myKey = Registry.LocalMachine.OpenSubKey(“SOFTWARE\\My Registry Key”, true);

myKey.SetValue(“My String Value”, “Test Value”, RegistryValueKind.String);

The OpenSubKey method is called to get a reference to our newly created key. It takes the path to the key, which is the same as when creating it, and it takes a boolean indicating whether or not we want to open it writable. Since we want to add a new value to this key, we want to set this to true.

Next, we simply call SetValue to create our new value. The SetValue function takes the name of the value as the first argument, the actual value as the second, and the type of value as the third. The RegistryValueKind enumeration has lots of different kinds of data, so most primitive types can be stored in the registry. If the value you’re trying to set doesn’t exist yet (like in this case), SetValue will create it for you.

Now let’s look at how to get values back out of the registry. It’s very similar to setting values and equally as easy.

RegistryKey myKey = Registry.LocalMachine.OpenSubKey(“SOFTWARE\\My Registry Key”, false);

string myValue = (string)myKey.GetValue(“My String Value”);
//myValue now equals “Test Value”

We get a reference to our key exactly like we did before except this time we pass false for the writable argument. A call to GetValue is then made to retrieve the value from the registry. This function returns an object, so it must first be cast to your desired type – in this case string. It’s always wise to check that the return value is not null before casting it since it is possible that the registry value you’re trying to read doesn’t exist.

Make Transparent Effects in PowerPoint 2007

Sometimes we need a clip art image that appears transparent in our PowerPoint presentation. For example, as the background of a paragraph that mixed with the original background image.
To do the following steps:

  1. Click on the Insert ribbon tab and click the button on the Clip Art
  2. Click the Go button in the panel and select Clip Art Clip Art, and put in the presentation
  3. Make a right click on clip art and select Group -> Ungroup
  4. On the question “Do you want to convert …?” click Yes
  5. Do it again, right click on the clip art and select Group -> Ungroup
  6. In the clip art is still selected, open the Format ribbon click on the Shape Fill button and select More Fill Colors
  7. Select colors and transparency values that match your background and click the OK button
  8. If there is any area of the square with the clip art images, simply click on the area of a square and pressing the delete key

Installing and Using Add-in: Microsoft Save as PDF

How to install:

  1. Download file SaveAsPDF&XPS di www.microsoft.com link:
    http://download.microsoft.com/download/b/5/3/b5370004-d59d-493f-b005-2299ffca8596/SaveAsPDF.exe
  2. Then click 2 times on SaveAsPDF & XPS file in the folder where you save downloaded earlier
  3. License Agreement screen appears, click on “Click here to accept …” and click Continue
  4. Then wait until the installation is finished, and press OK

Then the steps to save the file to PDF from Microsoft Office 2007 are:

  1. Create a document with Microsoft Office or Microsoft Excel
  2. Once completed, click Home and then click continue to select Save As PDF or XPS
  3. Then you specify the file name and select the PDF file type. Click Publish. So your document in the form of PDF files.
Search
Archives

You are currently browsing the archives for the Tips & Trick category.

Share your minds, soul, and idea is Digg proof thanks to caching by WP Super Cache